Mongodb 如何使用聚合对文档进行计数

Mongodb 如何使用聚合对文档进行计数,mongodb,mongodb-query,aggregation-framework,Mongodb,Mongodb Query,Aggregation Framework,我有以下文件: { uid:2, tid: 100 }, { uid:2, tid: 100 }, { uid:2, tid: 103 }, { uid:3, tid: 103 }, { uid:3, tid: 100 }, { uid:3, tid: 100 }, { uid:8, tid: 103, total: 1 } 我想统计相同uid和tid的计数 { uid: 2, tid: 100, total: 2}, { uid: 2, tid: 103, total: 1}, { u

我有以下文件:

{ uid:2, tid: 100 },
{ uid:2, tid: 100 },
{ uid:2, tid: 103 }, 
{ uid:3, tid: 103 }, 
{ uid:3, tid: 100 }, 
{ uid:3, tid: 100 },
{ uid:8, tid: 103, total: 1 }
我想统计相同uid和tid的计数

{ uid: 2, tid: 100, total: 2},
{ uid: 2, tid: 103, total: 1},
{ uid: 3, tid: 100, total: 2},
{ uid: 3, tid: 103, total: 1 }
我试着用

db.collection.aggregate([
    { $match: { uid: { $in: [ "2", "3" ] } } },
    { $group: { _id: "$tid", total: { $sum: 1 } } },
    { $sort: { total: -1 } }
])
然后我得到的数据如下

{
    "result" : [ 
          {
              "_id" : "100",
              "uid" : "2",
              "total" : 2.0000000000000000
          }, 
          {
              "_id" : "103",
              "student" : "2",
              "total" : 1.0000000000000000
          }
      ],
      "ok" : 1.0000000000000000 }

某些数据未显示。

如果需要计算
总计
字段的总计,正确的合计应为:

db.collection.aggregate([
    { $match: { uid: { $in: ["2","3"] } } },
    { $group: { 
        _id: { tid: "$tid", uid: "$uid" }, 
        total: { $sum: "$total" } 
        } 
    },
    { $sort: { total: -1 } }
])
这将按
uid
筛选集合,然后计算按
tid
uid
分组的所有
total
字段的总和,并按
total
向后排序