【发布时间】:2020-02-10 16:27:18
【问题描述】:
有一个包含以下字段的项目集合:
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 来获得预期的结果? Mongo 中的 JOIN 或子查询等价于什么? (我使用的是 mongodb 4.0.4)
谢谢!
【问题讨论】:
-
当你说“每个组的最后更新记录由 id 和 item_id”那么你应该得到所有三个文档。
-
您不需要自联接 - 无论是在 SQL 还是在 MongoDB 中
标签: mongodb mongodb-query