MongoDB聚合,计算数组中的每个项目并按项目分组

时间:2019-03-09 14:11:47

标签: mongodb aggregation-framework

在这里,我有一系列重复的项目,例如

[
 'gg',
 'bb',
 'dd',
 'cc',
 'll',
 'aa',
 'cc',
 'gg',
 'bb',
 'dd',
 'cc',
 'bb',
 'dd',
 'll',
 'aa',
]

我愿意返回的就是这样

{
 'gg': 2,
 'bb': 3,
 'dd': 3,
 'cc': 2,
 'll': 2,
 'aa': 2,
}

可以用MongoDB聚合完成吗???感谢任何帮助

1 个答案:

答案 0 :(得分:1)

$unwind$group用作聚集Pipiline的阶段:
查询:

db.collection.aggregate([
      {
        $unwind: "$items"
      },
      {
        $group: {
          _id: "$items",
          count: {
            $sum: 1
          }
        }
      }
    ])

结果:

{
    "_id": "ll",
    "count": 2
  },
  {
    "_id": "gg",
    "count": 2
  },
  {
    "_id": "bb",
    "count": 3
  },
  {
    "_id": "cc",
    "count": 3
  },
  {
    "_id": "aa",
    "count": 2
  },
  {
    "_id": "dd",
    "count": 3
  }