MongoDB的文件存儲格式爲BSON,同JSON同樣支持往其它文檔對象和數組中再插入文檔對象和數組,同時擴展了JSON的數據類型.與數據庫打交道的那些應用。例如,JSON沒有日期類型,這會使得處理原本簡單的日期問題變得很是繁瑣。只有一種數字類型,無法區分浮點數和整數,更不能區分32位和64位數字。也沒有辦法表示其餘經常使用類型,如正則表達式或函數。html
下面是MongoDB的支持的數據類型:web
JavaScript中只有一種「數字」類型。由於MongoDB中有3種數字類型(32位整數、64位整數和64位浮點數),shell必須繞過JavaScript的限制。默認狀況下,shell中的數字都被MongoDB當作是雙精度數。這意味着若是你從數據庫中得到的是一個32位整數,修改文檔後,將文檔存回數據庫的時候,這個整數也被轉換成了浮點數,即使保持這個整數原封不動也會這樣的。因此明智的作法是儘可能不要在shell下覆蓋整個文檔。正則表達式
JavaScript的Date對象用作MongoDB的日期類型,建立一個新的Date對象時,一般會調用new Data("")。shell
下面將按照學習RDMS時先介紹相似行、表、數據庫概念的知識,而後在去學習增刪改查等操做。數據庫
文檔是MongoDB中數據的基本單元(相似於關係型數據庫中的行,可是比行要複雜得多)。多個鍵及其關聯的值有序地放置在一塊兒即是文檔。MongoDB的文件存儲格式爲BSON。數組
BSON是Binary JSON 的簡稱,是一個JSON文檔對象的二進制編碼格式。BSON同JSON同樣支持往其它文檔對象和數組中再插入文檔對象和數組,同時擴展了JSON的數據類型。如:BSON有Date類型和BinDate類型。BSON有三個特色:輕量性、可遍歷性、高效性服務器
文檔就能夠這樣表示:
{ "firstName": "egger", "lastName":"wong" }函數
注意點:工具
集合就是一組文檔(相似於關係型數據庫中的表),能夠被看作是沒有模式的表。學習
集合是無模式的。這意味着一個集合裏面的文檔能夠是各式各樣的。例如,下面兩個文檔能夠存在於同一個集合裏面:
{"name": "egger"}
{"age":18}
上面的文檔不光是值的類型不一樣(字符串和整數),它們的鍵也是徹底不同的。
雖然集合裏面能夠放置任何文檔,可是推薦使用多個集合:
咱們能夠經過名字來標識集合。集合名能夠是知足下列條件的任意UTF-8字符串。
組織集合的一種慣例是使用"."字符分開的按命名空間劃分的子集合。在MongoDB中使用子集合來組織數據是很好的方法
例如,一個我的信息可能包含兩個集合,分別是person.name和person.age。這樣作的目的只是爲了使組織結構更好些,也就是說person這個集合(這裏根本就不須要存在)及其子集合沒有任何關係。把數據庫的名字放到集合名前面,獲得就是集合的徹底限定名,稱爲命名空間。命名空間的長度不得超過121字節,在實際使用當中應該小於100字節。
不少MongoDB工具中都包含子集合。
MongoDB中多個集合能夠組成數據庫。MongoDB的單個實例能夠容納多個獨立的數據庫,每個都有本身的集合和權限,不一樣的數據庫也放置在不一樣的文件中。
數據庫也經過名字來標識。數據庫名能夠是知足如下條件的任意UTF-8字符串。
有一些數據庫名是保留的,能夠直接訪問這些有特殊做用的數據庫。
• admin
從權限的角度來看,這是「root」數據庫。要是將一個用戶添加到這個數據庫,這個用戶自動繼承全部數據庫的權限。一些特定的服務器端命令也只能從這個數據庫運行,好比列出全部的數據庫或者關閉服務器。
• local
這個數據永遠不會被複制,能夠用來存儲限於本地單臺服務器的任意集合
• config
當Mongo用於分片設置時,config數據庫在內部使用,用於保存分片的相關信息。
原文地址:http://www.cnblogs.com/egger/archive/2013/04/27/3047191.html