我想知道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并不明显。
答案 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驱动程序的一部分。