代码之家  ›  专栏  ›  技术社区  ›  Dinushan

如何获取bson文档的字节大小

  •  2
  • Dinushan  · 技术社区  · 9 年前

    bson文档的size()函数返回的int值是字节数吗?(无法找到此API的详细信息)。
    如何以字节为单位获取bson文档的大小?这是我的代码。

    import org.bson.Document;
    
    MongoDatabase db...;
    MongoCollection<Document> mongoCollection = db.getCollection(...);
    MongoCursor<Document> cursor = mongoCollection.find().iterator();
    Document doc = cursor.next();
    int size = doc.size(); // does this return number of bytes 
    // how to get size of doc in bytes?
    
    2 回复  |  直到 9 年前
        1
  •  3
  •   Thomas VDK    6 年前

    如果您需要知道对象在进入集合之前的大小,我使用了以下代码 o型 是要测试的对象:

        BsonDocument bsonDocument = BsonDocumentWrapper.asBsonDocument(o, getMongoCollection().getCodecRegistry());
        RawBsonDocument rawBsonDocument = RawBsonDocument.parse(bsonDocument.toJson() );
    
        int bsonSize = rawBsonDocument.getByteBuffer().remaining();
    

    如果要防止对象可能超过16Mb的最大大小,这一点尤其有用: https://docs.mongodb.com/manual/reference/limits/

        2
  •  0
  •   Ross    7 年前

    将文档作为 RawBsonDocument 然后使用 getByteBuffer().remaining() 方法

    MongoCollection<RawBsonDocument> mongoCollection = db.getCollection(collectionName, RawBsonDocument.class);
    MongoCursor<RawBsonDocument> cursor = mongoCollection.find().iterator();
    RawBsonDocument doc = cursor.next();
    int size = doc.getByteBuffer().remaining()