Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.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-在集合中查找某个字段的$max时获取整个文档_Mongodb - Fatal编程技术网

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

MongoDB-在集合中查找某个字段的$max时获取整个文档,mongodb,Mongodb,因此,我们有一个类似于以下文档的文档集合: {name : "Joe", age: 99} {name : "Hazel", age: 23} {name : "Alice", age: 81} 我可以通过以下管道聚合来获得最大年龄: {$group : {$max : "$age"}} 但是,这将只返回age的实际最大值,而我对age字段最大的整个文档感兴趣。i、 e,对于上面的收集,我想得到这个: {name : "Joe", age: 99} 这也可以通过$project db.co

因此,我们有一个类似于以下文档的文档集合:

{name : "Joe", age: 99}
{name : "Hazel", age: 23}
{name : "Alice", age: 81}
我可以通过以下管道聚合来获得最大年龄:

{$group : {$max : "$age"}}
但是,这将只返回
age
的实际最大值,而我对
age
字段最大的整个文档感兴趣。i、 e,对于上面的收集,我想得到这个:

{name : "Joe", age: 99}

这也可以通过$project

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

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

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

如果您确实想继续使用聚合,我建议按年龄排序,然后限制为1。基本上做
findOne
做的事情

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

确保
age
字段已编制索引,此查询将非常快速