Найти по идентификатору объекта в Jongo

Я знаю, что этот вопрос невероятно простой... Я извиняюсь заранее.

Я не могу найти Монго с помощью Jongo.

Я старался

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 ) не определено Что неудивительно, ведь именно к какому объекту должна относиться эта функция?

Мой вопрос: как мне найти _id в Jongo?

1 ответ

Решение

Кто-то помог мне найти ответ в другом месте, положив его сюда для потомков

Действительная конструкция для этого

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);`
Другие вопросы по тегам