MongoDB:组,然后检索每个组的最大值条目



在下面的集合中,我想按author分组,然后,对于每个author,显示price最高的条目的name

[
{ "name": "Design", "price": 499, "author": "ted" },
{ "name": "Launch", "price": 999, "author": "ted" },
{ "name": "Test",  "price": 1200, "author": "bob" },
{ "name": "Scale",  "price": 1499, "author": "bob" }
]

所以,在这里我的查询应该返回LaunchScale

我尝试按如下方式聚合,但我不确定之后该怎么做,除了将所有条目拉到客户端上,然后处理所有组以找到具有最高价格的条目(这听起来效率很低(。

[
{
"$group": {
"_id": "$author",
"entry": {
"$push": {
"price": "$price",
"name": "$name"
}
}
}
}
]

什么是有效的方法?

谢谢!

根据MongoDB的答案 - 获取集合中每组具有最大属性的文档

请试一试

db.collection.aggregate([
{ "$sort": {  "price": -1 } },
{ "$group": {
"_id": "$author",
"price": { "$first": "$price" },
"name": { "$first" "$name" }
}}
])

最新更新