有没有一种简单的方法可以根据特定字段的唯一值选择最新的文档



例如,如果您有一个包含字段_iduuidtimestamp的数据集,并且数据包含数千个文档,分布在200个不同的uuid中,并且您希望返回200个文档,每个uuid一个,每个文档都是最新的(timestamp递减等(,您将如何执行此操作?

我尝试了一些解决方案,并在StackOverflow中进行了搜索,但运气不佳。我相信有一些方法可以用聚合来做到这一点。

任何正确方向的提示或点头都将不胜感激。

感谢

事实证明,解决方案实际上非常简单。将不同字段用作$group_id,对于所需的值,请先对其进行排序,然后使用$last选择最后一项。像这样:

db.example.aggregate([
{ $sort: { "timestamp": 1 } },
{ $group: { _id: "$uuid", timestamp: { $last: "$timestamp" } } }
])

如果你想要最新的,我想你可以失去

db.example.aggregate([
{ $group: { _id: "$uuid", timestamp: { $last: "$timestamp" } } }
])

好吧,这就解决了。

最新更新