Java驱动程序相当于为JavaScript壳的Object.bsonsize(DOC)?(Java

2019-09-17 18:18发布

我想知道的Java驱动程序的相当于蒙戈的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驱动程序。 它通过JavaDoc中并不明显。

Answer 1:

有什么能那样干净有什么Shell中可用的,但是这将工作:

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


Answer 2:

您可以使用BasicBSONEncoder :

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


Answer 3:

关于什么:

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

这是双重的不是int。

doEval是因为第一个版本MongoDB的Java驱动程序的一部分。



文章来源: Java driver equivalent for JavaScript shell's Object.bsonsize( doc )?