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

问题描述 投票:2回答:2

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?
mongodb mongodb-java bson
2个回答
0
投票

获取文档作为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()

2
投票

如果您需要知道对象在Collection之前所需的大小,我使用此代码,其中o是要测试的Object:

    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/,这将特别有用

© www.soinside.com 2019 - 2024. All rights reserved.