Mongodb 按值分组并统计出现次数

3 mongodb mongodb-query aggregation-framework

我试图计算某个特定值在集合中出现的次数。

{
  _id:1,
  field1: value,
  field2: A,
}

{
  _id:2,
  field1: value,
  field2: A,
}

{
  _id:3,
  field1: value,
  field2: C,
}

{
  _id:4,
  field1: value,
  field2: B,
}

Run Code Online (Sandbox Code Playgroud)

我想要的是计算 A 发生、B 发生和 C 发生的次数并返回计数。

我想要的输出

{
  A: 2,
  B: 1,
  C: 1,
}
Run Code Online (Sandbox Code Playgroud)

Nen*_*vic 7

$group这是聚合管道中阶段的典型用例。你可以这样做:

  • $group- 按字段2对所有文档进行分组
  • $sum- 计算field2每个值的文档数量
db.collection.aggregate([
  {
    "$group": {
      "_id": "$field2",
      "count": {
        "$sum": 1
      }
    }
  }
])
Run Code Online (Sandbox Code Playgroud)

工作示例