我有一个这种结构的mongo数据库:
people:{
{
'code': '234',
'name': 'x'
},
{
'code': '432',
'name': 'y'
},
{
'code': '234',
'name': 'x'
}
}
我的查询结果应为:
{
'code': '234',
'name': 'x'
}
我想检索此值,因为它在此集合中最多出现。我正在尝试使用聚合和计数方法,但无法正确管理它。
这样做的命令是什么?
提前致谢。
答案 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 }