Mongodb 是否有一种简单的方法可以根据特定字段的唯一值选择最近的文档?
例如,如果您有一个数据集,其中包含Mongodb 是否有一种简单的方法可以根据特定字段的唯一值选择最近的文档?,mongodb,Mongodb,例如,如果您有一个数据集,其中包含\u id、uuid和时间戳,并且数据包含数千个文档,比如说,分布在200个不同的uuid,您希望返回200个文档,每个uuid,每个文档都是最新的(时间戳降序等),你会怎么做 我尝试了一些解决方案,并在StackOverflow中进行了搜索,但运气不好。我相信有一些方法可以通过聚合实现这一点 任何正确方向的提示或点头表示感谢 谢谢事实证明,解决方案其实非常简单。使用不同的字段作为$group\u id,首先对其进行排序,然后使用$last选择最后一项。如下所示
\u id
、uuid
和时间戳
,并且数据包含数千个文档,比如说,分布在200个不同的uuid
,您希望返回200个文档,每个uuid
,每个文档都是最新的(时间戳
降序等),你会怎么做
我尝试了一些解决方案,并在StackOverflow中进行了搜索,但运气不好。我相信有一些方法可以通过聚合实现这一点
任何正确方向的提示或点头表示感谢
谢谢事实证明,解决方案其实非常简单。使用不同的字段作为
$group
\u id
,首先对其进行排序,然后使用$last
选择最后一项。如下所示:
db.example.aggregate([
{ $sort: { "timestamp": 1 } },
{ $group: { _id: "$uuid", timestamp: { $last: "$timestamp" } } }
])
如果您想要最新的,我想您可以通过以下方式失去排序:
db.example.aggregate([
{ $group: { _id: "$uuid", timestamp: { $last: "$timestamp" } } }
])
好吧,事情就这样解决了