Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 按另一个数组属性的值对属性的和进行分组_Mongodb_Mongodb Query_Aggregation Framework - Fatal编程技术网

Mongodb 按另一个数组属性的值对属性的和进行分组

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",

我有一个“tagsCount”系列,看起来是这样的:

{ 
    "_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
,所以我把事情搞砸了是有道理的。