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

How to get size in bytes of bson documents

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?

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

如果您需要知道对象在进入集合之前的大小,我使用了这段代码,其中 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/