如何在 MongoDB 中进行简单计数和分组?

how to get simple count & group by in MongoDB?

假设我有一个包含两个类别的数据,例如 - 足球或篮球,其中足球值为 1,篮球值为 2,我们有以下数据:

_id    game
'1'      1
'2'      1
'3'      2
'4'      1
'5'      2

(数据包含足球3次,篮球2次)。 我想执行 returns 以下对象的聚合:

{
   footballCount: 3,
   basketballCount: 2
}

我想不出这样的聚合会导致这样的结构。 我该怎么做?

您可以针对不同的情况进行条件求和。

db.collection.aggregate([
  {
    $group: {
      _id: null,
      footballCount: {
        $sum: {
          "$cond": {
            "if": {
              $eq: [
                "$game",
                1
              ]
            },
            "then": 1,
            "else": 0
          }
        }
      },
      basketballCount: {
        $sum: {
          "$cond": {
            "if": {
              $eq: [
                "$game",
                2
              ]
            },
            "then": 1,
            "else": 0
          }
        }
      }
    }
  }
])

这里是Mongo playground供您参考。