【问题标题】:MongoDB aggregate sum of each elementMongoDB聚合每个元素的总和
【发布时间】:2016-07-20 12:40:20
【问题描述】:

我有以下文件:

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

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

final:[10,8]

所以基本上“final”数组中的每个元素都是n个元素的“value”数组中每个元素的总和。

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

我尝试了以下方法,但在“放松”阶段后一直卡住,不知道如何继续。

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

感谢任何帮助。

【问题讨论】:

    标签: arrays mongodb mongoose


    【解决方案1】:

    请在下面找到查询 - 可能是重塑输出的案例,但主要目标已实现: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 ] }

    【讨论】:

    • 谢谢!工作得很好。
    猜你喜欢
    • 2019-02-02
    • 1970-01-01
    • 1970-01-01
    • 2019-06-18
    • 1970-01-01
    • 1970-01-01
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多