Существует коллекция элементов со следующими полями:
id item_id quantity last_update
-------------------------------------------
1 111 10 2020-02-10 09:00:00
2 222 10 2020-02-10 09:00:00
2 222 15 2020-02-10 10:00:00
Я хочу получить последнюю обновленную запись для каждой группы по id и item_id. Результаты должны быть:
id item_id quantity last_update
-------------------------------------------
1 111 10 2020-02-10 09:00:00
2 222 15 2020-02-10 10:00:00
Если бы это было SQL, то я бы сделал что-то вроде:
SELECT a.* FROM items a JOIN
( SELECT id ,item_id , max(last_update) as max_last_update
FROM items ) as b ON a.id=b.id AND a.item_id=b.item_id AND a.last_update=b.max_last_update
(или используя самосоединение).
Я новичок в mongoDB, я выполнил внутренний запрос следующим образом:
inner_query = db.items.aggregate({ $group : { _id: {id:"$id" , item_id:"$item_id"}, max_last_update: { $max : "$last_update" }}})
Как я могу использовать inner_query var для получения ожидаемых результатов? Что эквивалентно в Mon go JOIN или подзапросе? (я использую mongodb 4.0.4)
Спасибо!