mongoDB聚集,计数数组中的每个项目,然后按项目进行分组



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

[
 '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聚集来完成吗???感谢任何帮助

使用$ utind和$ 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
  }

这也很好...

db.users.aggregate([
    {
        $group: {
            _id: "$email",
            count: { $sum: 1 }
        }
    },
    {
        $match: {
            count: { $gt: 1 }
        }
    }
])

输出:

{ "_id" : "a@gmail.com", "count" : 2 }
{ "_id" : "b@gmail.com", "count" : 2 }
{ "_id" : "c@gmaiL.com", "count" : 8 }
{ "_id" : "d@gmail.com", "count" : 2 }
{ "_id" : "e@gmail.com", "count" : 2 }
{ "_id" : "f@gmail.com", "count" : 2 }

相关内容

最新更新