можно ли получить все документы, используя критерии в двух полях с максимальной датой - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть документы в коллекции 'слияния' с плоской структурой и огромным количеством 'полей' (более 100).

Среди этих полей есть 'partNumber' и 'date', которые не являютсяуникальный.

Я новичок в Монго, мне нужно получить все документы (и все их поля, без необходимости явно перечислять их на стадии проекта), но выбрать только те записи, которые имеют самую последнюю дату дляданный partNumber (и это для всех partNumbers).Это возможно в mongoDB 3.2?Какой будет запрос?

Большое спасибо заранее.

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

После борьбы со сложными запросами агрегации я нашел решение KISS с некоторым кодом и только 2 запросами: - 1 запрос агрегации для получения пар partNumber, самая последняя дата

db.getCollection('merge').aggregate(
   [
     { $group : { _id : "$partNumber", maxdate: { $max: "$date" } } }
   ]
)
  • Затем в Pythonодин запрос на поиск, использующий все кортежи, проанализированные с предыдущего шага с помощью (partNumber = partNumber1 и date = date1) или (partNumber = partNumber2 и date = date 2) или ...

Выполняется очень быстро.

0 голосов
/ 18 сентября 2018

да, это возможно, вы хотите знать запрос MongoDB для этой вещи? Или вы используете какой-либо язык внутреннего программирования?

...