我知道这个问题令人难以置信...提前对不起。
我无法使用Jongo为Mongo做“按ID查找”。
我试过了
Iterator<MongoTest> all = db.getCollection("mongoTest").find("{'_id': ObjectId('5194d46bdda2de09c656b64b')}").as(MongoTest.class).iterator();
错误:
java.lang.IllegalArgumentException: {'_id': ObjectId('5194d46bdda2de09c656b64b')} cannot be parsed
at org.jongo.query.JsonQuery.marshallQuery(JsonQuery.java:34)
at org.jongo.query.JsonQuery.<init>(JsonQuery.java:27)
at org.jongo.query.JsonQueryFactory.createQuery(JsonQueryFactory.java:52)
at org.jongo.Find.<init>(Find.java:41)
at org.jongo.MongoCollection.find(MongoCollection.java:79)
at org.jongo.MongoCollection.find(MongoCollection.java:75)
我试过了
Iterator<MongoTest> all = db.getCollection("mongoTest").find(withOid(new ObjectId("5194d46bdda2de09c656b64b"))).as(MongoTest.class).iterator();
完全与文档中的一样,我什至无法编译它... ObjectId有两种可能的类型。
de.undercouch.bson4jackson.types.ObjectId;
告诉我
The constructor ObjectId(String) is undefined
如果我用
org.bson.types.ObjectId;
有时似乎效果更好-但它仍然告诉我
withOid( ObjectId )
是未定义的。这并不完全令人惊讶,是因为该函数应该属于哪个对象?我的问题:如何在Jongo中通过_id查找?
最佳答案
有人帮助我在其他地方找到答案,以备后代之用
的有效构造是
db.getCollection("mongoTest")
.find("{ _id: # }", new ObjectId("5194d46bdda2de09c656b64b"))
.as(MongoTest.class);
使用
org.bson.types.ObjectId
或
db.getCollection("mongoTest")
.findOne(Oid.withOid("5194d46bdda2de09c656b64b"))
.as(MongoTest.class);`