MongoDB-在集合中找到某个字段的$ max时获取完整文档

时间:2019-05-15 07:00:24

标签: mongodb

因此,我们有一系列类似于以下内容的文档:

{name : "Joe", age: 99}
{name : "Hazel", age: 23}
{name : "Alice", age: 81}

我可以通过汇总以下管道来获得最大年龄:

{$group : {$max : "$age"}}

但是,这只会返回age的实际最大值,而我对age字段最大的整个文档感兴趣。也就是说,对于上面的收藏,我想得到这个:

{name : "Joe", age: 99}

2 个答案:

答案 0 :(得分:0)

我想说的是,最简单的方法不是使用aggregate,而是使用findOne

db.collection.findOne({}).sort({'age': -1})

如果您确实想继续使用aggregate,我建议您按年龄排序,然后将其限制为1.基本上执行findOne的操作。

任何其他方式都将需要更多阶段。

确保age字段已被索引,并且该查询将非常快。

答案 1 :(得分:-1)

这也可以通过 $ project

处理
db.collection.aggregate([
  {
    $project: {
      age: {
        $max: "$age"
      },
      name: 1
    }
  }
])