MongoDB汇总了每个元素的总和

时间:2016-03-31 21:14:53

标签: arrays mongodb mongoose

我有以下文件:

    [
  {
    "name": "firstEntry",
    "values": [
      1,
      3
    ]
  },
  {
    "name": "secondEntry",
    "values": [
      9,
      5
    ]
  }
]

我的最终目标是获得每个元素的总和。例如:

final:[10,8]

所以基本上每个元素都在" final"具有n个元素的数组是"值"中每个元素的总和。包含n个元素的数组。

  • final [0] =(document1)values [0] +(document2)values [0]
  • final [1] =(document1)values [1] +(document2)values [1]

我已经尝试了以下但是在"放松后#34;阶段,不知道如何进行。

db.entries.aggregate ({
    "$unwind": { path: "$values" }
},{
"$group" : {
            "_id" : {
                "index" : "$arrayIndex",
            }
   }});

感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

请在下面找到查询 - 这可能是改造输出的一个案例,但主要目标已实现:Below example requires mongo 3.2

db.titanium.aggregate ([
{$unwind:{
        path: "$values" ,
        includeArrayIndex:"arrayIndex"
}},
{
    $group:{
        _id:"$arrayIndex",
        valueCount:{ $sum : "$values"}
}},
{
    $group:{
        _id:1, // this is to have someting for grouping
        final:{$push:"$valueCount"}}}
])
  

{" _id" :1," final" :[8,10]}