Mongo查询以查找某些唯一键的最高值

时间:2016-05-06 06:22:19

标签: mongodb mongodb-query aggregation-framework

我在

这样的集合中有一些文档
{ "age" : 22, "value" : 234 },
{ "age" : 23, "value" : 54 },
{ "age" : 22, "value" : 260 },
{ "age" : 22, "value" : 23 }

这里我们有不同的年龄和价值观。我需要为每个年龄选择最高价值。所以结果应该是。

{ "age" : 23, "value" : 54 }
{ "age" : 22, "value" : 260 }

2 个答案:

答案 0 :(得分:0)

以下aggregation查询应该可以解决问题:

db.collection.aggregate([
    {$group: {_id: "$age", value: {$max: "$value"}}},
    {$project: {_id: 0, age: "$_id", value: 1}}
])

答案 1 :(得分:0)

您需要{"年龄"} $group您的文件并使用$max累加器运算符返回每个组的最大值。

db.people.aggregate([
    { "$group": {
        "_id": "$age", 
        "value": { "$max": "$value" } 
    }}
])

产生:

{ "_id" : 23, "value" : 54 }
{ "_id" : 22, "value" : 260 }

请注意,您需要在管道中添加另一个$project阶段才能获得准确的输出,但这会导致性能下降。