`$ group`由数组中的唯一项

时间:2015-11-06 15:39:20

标签: javascript mongodb mongoose

我们说我们有像

这样的文件
[
 {tags: ['a', 'b', 'c']},
 {tags: ['b', 'c', 'd']}
]

我们如何计算每个标签的文档,所以

[
 {_id: 'a', count: 1},
 {_id: 'b', count: 2},
 {_id: 'c', count: 2},
 {_id: 'd', count: 1}
]

因为$group上的正常$tags会(当然)会产生不同的结果。

1 个答案:

答案 0 :(得分:2)

我认为以下查询会为您提供结果。 $unwind是关键所在。

db.collection_name.aggregate( [ { $unwind : "$tags" }, 
       { $group : { _id :  "$tags", total : { $sum : 1 } } }] )

供参考 - https://docs.mongodb.org/manual/reference/operator/aggregation/unwind/