Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.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:按id对不同的值求和_Mongodb_Aggregation Framework - Fatal编程技术网

聚合-MongoDB:按id对不同的值求和

聚合-MongoDB:按id对不同的值求和,mongodb,aggregation-framework,Mongodb,Aggregation Framework,我对集合执行聚合,但结果不是预期的结果: db.getCollection('test').aggregate( [ {$match: { "colx" : 8323, "id" : {$in: [802, 801, 803, 805, 810, 806, 807, 808, 809, 816]}}}, {$group : {_id

我对集合执行聚合,但结果不是预期的结果:

db.getCollection('test').aggregate(
                          [
                           {$match: { "colx" : 8323, "id" : {$in:    [802, 801, 803, 805, 810, 806, 807, 808, 809, 816]}}},
                           {$group : {_id : { coly : "$coly" , id : "$id" } ,  total: {$sum: "$val"} } },
                         ])
集合'test'包含字段coly、id、val,对于不同的coly,每个id可以是相同的,具有不同的值,对于相同的“coly”,一个id可以存在多次

聚合的目的是通过按字段'coly'分组的“id”获取值('val')之和

mongo版本是3.4

需要帮忙吗

结果是:

/* 1 */
{
"_id" : {
    "coly" : 898,
    "id" : 801
},
"total" : 3355560
}

/* 2 */
{
"_id" : {
    "coly" : 898,
    "id" : 805
},
"total" : 2760139
}
预期结果:

{
"_id": 898,
"results": [{
        "id": 801,
        "total": 3355560
    },
    {
        "id": 805,
        "total": 2760139
    }
]
}

你的话模棱两可

根据您的预期结果,我认为您的查询是按
coly
分组,然后按
id
分组,并计算每组的总数:

db.test.aggregate([
   {$match: { "colx" : 8323, "id" : {$in: [802, ....]}}},
   {$group: {_id : { coly : "$coly" , id : "$id" } ,  total: {$sum: "$val"} } },
   {$group: {_id: '$_id.coly', items: {$push: {id: '$_id.id', total: '$total'}} } }
])
这将输出:

{
"_id": 898,
"items": [
   {
    "id" : 801
    "total" : 3355560
   },
   {
    "id" : 805
    "total" : 2760139
   }
]
}

您的预期结果不是有效的JSON,请修复该错误并完成更正!谢谢