Mongodb 按另一个数组属性的值对属性的和进行分组
我有一个“tagsCount”系列,看起来是这样的:Mongodb 按另一个数组属性的值对属性的和进行分组,mongodb,mongodb-query,aggregation-framework,Mongodb,Mongodb Query,Aggregation Framework,我有一个“tagsCount”系列,看起来是这样的: { "_id" : ObjectId("59e3a46a48507851d411ad78"), "tags" : [ "Marketing" ], "cpt" : 14354 }, { "_id" : ObjectId("59e3a46a48507851d411ad79"), "tags" : [ "chatbot", "Content marketing",
{
"_id" : ObjectId("59e3a46a48507851d411ad78"),
"tags" : [ "Marketing" ],
"cpt" : 14354
},
{
"_id" : ObjectId("59e3a46a48507851d411ad79"),
"tags" : [
"chatbot",
"Content marketing",
"Intelligence artificielle",
"Marketing digital",
"Personnalisation"
],
"cpt" : 9037
}
当然还有更多的线路
我想得到由“tags”的值分组的“cpt”的总和
我想到了:
db.tagsCount.aggregate([
{ "$project": { "tags":1 }},
{ "$unwind": "$tags"},
{ "$group": {
"_id" : "$tags",
cpt : "$cpt" ,
"count": { "$sum": "$cpt" }
}}
])
但这并不能解决问题,我有所有不同标签的列表,计数的值为0
是否可以执行我想要的操作?问题是,聚合管道从$project开始,它只选择下一个阶段的标记,这就是为什么在没有cpt的文档上执行$group。以下是我的工作示例:
db.tagsCount.aggregate([
{ "$unwind": "$tags"},
{ "$group": {
"_id": "$tags",
"count": { "$sum": "$cpt" }
}},
{ "$project": { "tag": "$_id", "_id": 0, "count": 1 }}
])您的
$group
阶段无效。也可以考虑向我们展示预期的结果。尝试<代码> { $组:{“$ID”:“$tag”,“计数”:{$$SUM“:“$CPT”}}} /代码> @ sTyvVAN我编辑了<代码> $GUG/<代码>阶段。谢谢。我要试试这个。我是mongodb的新手,我还没有真正理解$project
,所以我把事情搞砸了是有道理的。