Java驱动程序等效于JavaScript shell的Object.bsonsize(doc)?

时间:2012-06-04 17:53:32

标签: mongodb mongodb-java

我想知道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并不明显。

3 个答案:

答案 0 :(得分:6)

没有什么比shell中可用的更干净了,但是这样可以工作:

DBObject obj = coll.findOne();
int bsonSize = DefaultDBEncoder.FACTORY.create().
        writeObject(new BasicOutputBuffer(), obj));

答案 1 :(得分:3)

您可以使用BasicBSONEncoder

DBObject obj = coll.findOne();
int bsonSize = new BasicBSONEncoder().encode(obj).length;

答案 2 :(得分:1)

怎么样:

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

它是双倍而不是int。

自第一个版本以来,

doEval 是MongoDB Java驱动程序的一部分。