寻找pymongo最高价值的集合

时间:2017-10-11 06:20:55

标签: mongodb pymongo

下面提供了mongodb中的样本数据,

data = [{'name':'a','value':2},
        {'name':'a','value':3},
        {'name':'b','value':1},
        {'name':'b','value':3},
        {'name':'c','value':2}]

我已经知道如何找到一个与名字'a'相匹配的人:

db.lol.find_one({'name': 'a']},sort=[("value", pymongo.DESCENDING)])

如何使用pymongo获取具有最高值的每个名称的所有数据,如下所示:

data = [{'name':'a','value':3},
        {'name':'b','value':3},
        {'name':'c','value':2}]

2 个答案:

答案 0 :(得分:0)

db.lol.find_one({},sort=[("value", pymongo.DESCENDING)])

答案 1 :(得分:0)

您可以在此处使用简单的$group$max聚合:

db.lol.aggregate([
    {
        $group : {
            _id : { name : '$name' },
            value : { $max : '$value' }
        }
    },
    { 
        $project : {
            _id : 0,
            value : 1,
            name : "$_id.name"
        }
    }
]);