因此,我们有一系列类似于以下内容的文档:
{name : "Joe", age: 99}
{name : "Hazel", age: 23}
{name : "Alice", age: 81}
我可以通过汇总以下管道来获得最大年龄:
{$group : {$max : "$age"}}
但是,这只会返回age
的实际最大值,而我对age
字段最大的整个文档感兴趣。也就是说,对于上面的收藏,我想得到这个:
{name : "Joe", age: 99}
答案 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
}
}
])