在Jongo中按对象ID查找

时间:2013-05-16 13:45:07

标签: java mongodb jongo

我知道这个问题非常基本......我很抱歉。

我不能使用Jongo为Mongo做一个'ID by 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进行查找?

1 个答案:

答案 0 :(得分:8)

有人帮我在其他地方找到答案,把它放在后面为了后人

有效的构造

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);`