1. 程式人生 > >mongodb-bson

mongodb-bson

規範 asc oda bject 表示 try doc tor 結束

json和bson

json(JavaScript Object Notation, JS 對象標記)使用人類易讀的文本形式標記來對象,其優勢體現在易讀,劣勢在於不易於在json上做操作(CRUD)。bson作為json的二進制編碼序列,其不僅僅是簡單的使用字符集(如utf-8)編碼json,而是使用了一套自己的編碼規範去編碼json,使得編碼後的二進制序列易於操作(但不易讀)。

example

{
    "0":"CloudComputing",
    "1":"NoSQL",
    "2":"BigData"
}

下圖將該json轉化為bson,首先是一個int32數據,表示了document的長度,然後是e_list(element_list),真正的document數據,最後是\x00結束符。

技術分享

BsonDocument

mongodb使用bson存儲一條記錄(即document,相當於關系數據庫中的行),java客戶端中可以使用BsonDocument和Document來表示一條記錄。

getCollection時,默認得到的Collection的元素類型是Document,可以向第二個參數傳入BsonDocument.class,從而得到元素類型為BsonDocument的Collection。這裏的codecRegistry持有client實例中註冊過的所有codec,通過codec就可以將bson解析為對應的java對象,比如DocumentCodec、BsonDocumentCodec、BsonValueCodec、BsonArray等。

 1 //MongoDatabase的實現
 2     @Override
 3     public MongoCollection<Document> getCollection(final String collectionName) {
 4         return getCollection(collectionName, Document.class);
 5     }
 6 
 7     @Override
 8     public <TDocument> MongoCollection<TDocument> getCollection(final
String collectionName, final Class<TDocument> documentClass) { 9 return new MongoCollectionImpl<TDocument>(new MongoNamespace(name, collectionName), documentClass, codecRegistry, readPreference, 10 writeConcern, readConcern, executor); 11 }

參考:http://www.cnblogs.com/zeliliu/archive/2012/10/01/2708330.html

mongodb-bson