MongoDB:整个数组元素的个数collection

MongoDB: count of array elements in whole collection

我的 collection 中有以下文件:

{
    "id" : 1,
    "tags" : ["tag1","tag2","tag3"]
},
{
    "id" : 2,
    "tags" : ["tag1","tag4","tag5"]
},
{
    "id" : 3,
    "tags" : ["tag1","tag5","tag6"]
},
...

我想知道相同的数组元素在collection中出现了多少次:

{
     "tag": "tag1",
     "count": 3
},
{
     "tag": "tag2",
     "count": 1
},
...

有没有办法在一个聚合中得到这个输出?

您可以在这种情况下使用 $unwind。 这是参考 link.

db.getCollection('tests').aggregate([
    { $unwind: "$tags" },
    { $group: {
        _id: "$tags",
        count: { $sum: 1 }
    }}
])