2

我想知道 Java 驱动程序等效于 Mongo JavaScript shell 的 Object.bsonsize( doc ) 方法是什么?例如,执行以下操作的 Java 代码是什么:

bobk-mbp:~ bobk$ mongo
MongoDB shell version: 2.0.4
connecting to: test
PRIMARY> use devices;
switched to db devices
PRIMARY> Object.bsonsize( db.profiles.findOne( { _id: "REK_0001" } ) );
186
PRIMARY> Object.bsonsize( db.profiles.findOne( { _id: "REK_0002" } ) );
218
PRIMARY> 

如何使用 MongoDB Java 驱动程序执行相同的基本用例。它通过 JavaDocs 并不明显。

4

3 回答 3

6

没有什么比 shell 中可用的更干净了,但这会起作用:

DBObject obj = coll.findOne();
int bsonSize = DefaultDBEncoder.FACTORY.create().
        writeObject(new BasicOutputBuffer(), obj));
于 2012-06-04T20:12:57.883 回答
3

您可以使用BasicBSONEncoder

DBObject obj = coll.findOne();
int bsonSize = new BasicBSONEncoder().encode(obj).length;
于 2012-10-08T13:44:18.787 回答
1

关于什么:

        CommandResult result = db.doEval("Object.bsonsize(db.profiles.findOne({ _id: "REK_0001" }))");
        double bsonSize = (Double) result.get("retval");

它是 double 而不是 int。

doEval从第一个版本开始就是 MongoDB Java 驱动程序的一部分。

于 2013-08-21T06:52:40.137 回答