Как построить вложенный запрос MongoDB в Java? - PullRequest
0 голосов
/ 24 мая 2019

Я пытаюсь перевести рабочий запрос Mongo Shell в java, но кажется, что я столкнулся со стеной.Я использую Mongo-Java-драйвер: 3.9.1.Запрос оболочки выглядит следующим образом:

db.getCollection('xyz').find({source_id: ObjectId("abc"), timestamp: {
    $gte : ISODate("2019-04-05 18:24:00.000Z"),
    $lt: ISODate("2019-04-05 18:30:00.000Z")
    }
  })

Запрос включает два критерия: совпадающий source_id и отметки времени между двумя указанными датами.

Мой Java-запрос выглядит так (startDate и endDateдаты в формате):

FindIterable<Document> cursor = collection.find(and(eq("source_id", new ObjectId("abc"))), and(gte("timestamp", startDate), lt("timestamp", endDate)));

Intellij дает мне сообщение: «Не удается найти метод» find (org.bson.conversions.Bson, org.bson.conversions.Bson) ».Это логическая ошибка или создание такого фильтра невозможно?

1 Ответ

1 голос
/ 24 мая 2019

Вам не хватает одного and:

FindIterable<Document> cursor = collection.find(and(and(eq("source_id", new ObjectId("abc"))), and(gte("timestamp", startDate), lt("timestamp", endDate))));

Общая идея такова: думайте о каждом { как о всеобъемлющем and утверждении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...