Mongo 计数所有集合文档中出现的数组项
Posted
技术标签:
【中文标题】Mongo 计数所有集合文档中出现的数组项【英文标题】:Mongo count array item occurrences across all collection documents 【发布时间】:2020-01-28 16:35:08 【问题描述】:我有一个 mongo 集合,其中每个文档都有一个包含多个主题标签的数组(一个简单的字符串)。我想计算每个主题标签出现的次数并返回如下内容:
hashtag: "hashtag1",
count: numOcurrences
hashtag: "hashtag2",
count: numOcurrences
...
看起来和problem类似,但是因为我不想按任何参数过滤,所以只计算整体出现我认为它必须是一种更清洁的方法来解决这个问题,遗憾的是我的mongo知识非常有限...
标签所在的集合,看起来与此类似,是标签数组中的“hastag”字段:
"_id": ...,
"hashtag" : [
"hashtag1",
"hashtag2"
],
"likes" : ...
,
"_id": ...,
...
【问题讨论】:
【参考方案1】:您的情况比您提到的其他问题要容易一些,您可以使用下面的聚合来解决它:
db.hashtags.aggregate([
"$unwind": "$hashtag"
,
"$group":
"_id": "$hashtag",
"count":
"$sum": 1
,
// you can skip this projection if it's okay for you to have the result like [ _id: "hashtag1", count: 2 ]
"$project":
"_id": 0,
"hashtag": "$_id",
"count": 1
])
您可以在mongoplayground 中看到一个工作示例
【讨论】:
非常感谢,原来如此!以上是关于Mongo 计数所有集合文档中出现的数组项的主要内容,如果未能解决你的问题,请参考以下文章