2014-08-28 115 views
1

我有這樣的結構的蒙戈數據庫最大出現:文檔在一個集合的MongoDB

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

我查詢的結果應該是:

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

我想檢索該值它在這個收藏中有最大的發生。我正在嘗試使用聚合和計數方法,但無法正確管理它。

該做什麼命令?

在此先感謝。

回答

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} 
0

蒙戈外殼: -

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


{ "_id" : { "code" : "234", "name" : "x" }, "count" : 2 } 
相關問題