Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 是否有一种简单的方法可以根据特定字段的唯一值选择最近的文档?_Mongodb - Fatal编程技术网

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" } } }
])
好吧,事情就这样解决了