按最高计数合计
如何使用聚合框架以最高计数来聚合结果?
{ "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所有文档,然后从每个type
和name
分组中取第一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 }