在mongodb集合中具有最大外观的文档

时间:2014-08-28 06:53:13

标签: python mongodb aggregation-framework pymongo

我有一个这种结构的mongo数据库:

 people:{
    {
     'code': '234',
     'name': 'x'
    },
    {
     'code': '432',
     'name': 'y'
    },
    {
     'code': '234',
     'name': 'x'
    }
 }

我的查询结果应为:

{
  'code': '234',
  'name': 'x'
}

我想检索此值,因为它在此集合中最多出现。我正在尝试使用聚合和计数方法,但无法正确管理它。

这样做的命令是什么?

提前致谢。

2 个答案:

答案 0 :(得分:1)

您可以使用此管道:

pipeline = [
    {'$group': {'_id': '$code', 'count': {'$sum': 1}}},
    {'$sort': {'count': -1}}
]

它将按降序排列次数对文档进行排序。例如:

In [4]: pymongo.MongoClient().whatever.test.aggregate(pipeline)
Out[4]: {'result': [{'_id': 234.0, 'count': 2}, {'_id': 432.0, 'count': 1}], 'ok': 1.0}

答案 1 :(得分:0)

Mongo Shell: -

>>>db.people.aggregate([
        {$group:{_id:{code:"$code",name:"$name"},count:{$sum:1}}},
        {$sort:{count:-1}},
        {$limit:1}
    ])


{ "_id" : { "code" : "234", "name" : "x" }, "count" : 2 }