JSONjavascript
JSON是一種簡單的數據表示方式,它易於理解、易於解析、易於記憶。但從另外一方面來講,由於只有null、布爾、數字、字符串、數組和對象這幾種數據類型,因此JSON有必定侷限性。例如,JSON沒有日期類型,JSON只有一種數字類型,沒法區分浮點數和整數,更別說區分32爲和64位數字了。再者,JSON沒法表示其餘一些通用類型,如正則表達式或函數。html
BSONjava
BSON(Binary Serialized Document Format)是一種類JSON的二進制形式的存儲格式,簡稱Binary JSON。它和JSON同樣,支持內嵌的文檔對象和數組對象,可是BSON有JSON沒有的一些數據類型,如Date和BinData類型。它支持下面數據類型。每一個數據類型對應一個數字,在MongoDB中可使用$type操做符查看相應的文檔的BSON類型正則表達式
類型 | 對應數字 | 別名 | 說明 |
Double1 | 1 | double | |
String | 2 | string | |
Object | 3 | object | |
Array | 4 | array | |
Binary data | 5 | binData | |
Undefined | 6 | undefined | 棄用 |
ObjectId | 7 | objectId | |
Boolean | 8 | 「bool」 | |
Date | 9 | 「date」 | |
Null | 10 | 「null」 | |
Regular Expression | 11 | 「regex」 | |
DBPointer | 12 | 「dbPointer」 | |
JavaScript | 13 | 「javascript」 | |
Symbol | 14 | 「symbol」 | |
JavaScript(with scope) | 15 | 「javascriptWithScope」 | |
32-bit integer | 16 | 「int」 | |
Timestamp | 17 | 「timestamp」 | |
64-bit integer | 18 | 「long」 | |
Min key | -1 | 「minKey」 | |
Max key | 127 | 「maxKey」 |
基本數據類型shell
null:用於表示空值或者不存在的字段,{「x」:null}數據庫
布爾型:布爾類型有兩個值true和false,{「x」:true}數組
數值:shell默認使用64爲浮點型數值。{「x」:3.14}或{「x」:3}。對於整型值,可使用NumberInt(4字節符號整數)或NumberLong(8字節符號整數),{「x」:NumberInt(「3」)}{「x」:NumberLong(「3」)}服務器
字符串:UTF-8字符串均可以表示爲字符串類型的數據,{「x」:「呵呵」}函數
日期:日期被存儲爲自新紀元依賴通過的毫秒數,不存儲時區,{「x」:new Date()}post
正則表達式:查詢時,使用正則表達式做爲限定條件,語法與JavaScript的正則表達式相同,{「x」:/[abc]/}
數組:數據列表或數據集能夠表示爲數組,{「x」: [「a「,「b」,」c」]}
內嵌文檔:文檔能夠嵌套其餘文檔,被嵌套的文檔做爲值來處理,{「x」:{「y」:3 }}
對象Id:對象id是一個12字節的字符串,是文檔的惟一標識,{「x」: objectId() }
二進制數據:二進制數據是一個任意字節的字符串。它不能直接在shell中使用。若是要將非utf-字符保存到數據庫中,二進制數據是惟一的方式。
代碼:查詢和文檔中能夠包括任何JavaScript代碼,{「x」:function(){/*…*/}}
BSON 與 MongoDB 的關係
BSON是用於存儲MongoDB【文檔】的一種文檔格式。驅動程序在使用【文檔】進行插入、查詢或其餘操做時。會先將【文檔】編碼成BSON格式,而後發送給服務器。一樣地,服務器將文檔返回客戶端時,也是已BSON格式進行的。驅動程序先對此BSON進行解碼而後再傳送給客戶端。所以,BSON與MongoDB的關係爲:MongoDB利用BSON格式存儲數據和傳輸數據
來源: http://www.cnblogs.com/Khadron/p/MongoDB_Note_1.html