zoukankan      html  css  js  c++  java
  • mongodb-bson

    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

  • 相关阅读:
    [JSOI2007][BZOJ1031] 字符加密Cipher|后缀数组
    leetcode Flatten Binary Tree to Linked List
    leetcode Pascal's Triangle
    leetcode Triangle
    leetcode Valid Palindrome
    leetcode Word Ladder
    leetcode Longest Consecutive Sequence
    leetcode Sum Root to Leaf Numbers
    leetcode Clone Graph
    leetcode Evaluate Reverse Polish Notation
  • 原文地址:https://www.cnblogs.com/holoyong/p/7449036.html
Copyright © 2011-2022 走看看