按最高计数合计

如何使用聚合框架以最高计数来聚合结果?

{ "type": "dog", "name": "buddy", "count": 67 }, { "type": "dog", "name": "buddy", "count": 34 }, { "type": "dog", "name": "tucker", "count": 17 }, { "type": "dog", "name": "tucker", "count": 52 }, { "type": "cat", "name": "gizmo", "count": 11 } 

我想汇总上面的结果,所以如果dog有相同的name我想得到最高的一个。 所以它看起来像:

 { "type": "dog", "name": "buddy", "count": 67 }, { "type": "dog", "name": "tucker", "count": 52 }, { "type": "cat", "name": "gizmo", "count": 11 } 

我已经尝试过使用$group ,但是并不知道如何以最高的数字来区分结果。

count递减sorting所有文档,然后从每个typename分组中取第一count

 db.test.aggregate([ {$sort: {count: -1}}, {$group: {_id: {type: '$type', name: '$name'}, count: {$first: '$count'}}} ]) 

输出:

 { "result" : [ { "_id" : { "type" : "cat", "name" : "gizmo" }, "count" : 11 }, { "_id" : { "type" : "dog", "name" : "tucker" }, "count" : 52 }, { "_id" : { "type" : "dog", "name" : "buddy" }, "count" : 67 } ], "ok" : 1 }