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

  • 相关阅读:
    org.tinygroup.ehcache-EhCache缓存解决方案
    org.tinygroup.validate-验证框架
    org.tinygroup.context-上下文环境
    org.tinygroup.commons-常用工具类
    org.tinygroup.context2object-参数对象构建
    org.tinygroup.config-统一应用配置
    org.tinygroup.binarytree-二叉树
    org.tinygroup.service-服务
    flask之wtform与flask-session组件
    Flask信号源码流程
  • 原文地址:https://www.cnblogs.com/holoyong/p/7449036.html
Copyright © 2011-2022 走看看