如何在Mongo中对2个或更多数组的元素求和

时间:2015-02-03 15:42:48

标签: mongodb nosql

我是mongo / nosql的新手,在“VALUES”项中有多个具有相同数组结构的文档。我希望能够将2个或更多数组的每个元素位置相加。谢谢你的帮助!

阵列

{
    "_id" : ObjectId("54cbf4e6e883561eba48425e"),
    "NAME" : "ATest",
    "VALUES" : [
        1,
        2,
        3,
        4,
        5
    ]
}
{
    "_id" : ObjectId("54cbf4e6e883561eba4842b4"),
    "NAME" : "BTest",
    "VALUES" : [
        10,
        20,
        30,
        40,
        50
    ]
}

期望的结果

{
    "_id" : "SUMTest",
    "SUMVALUES" : [
        11,
        22,
        33,
        44,
        55
    ]
}

1 个答案:

答案 0 :(得分:3)

作为聚合会很难,但请尝试map reduce并使用索引作为id发出每个值。类似的东西:

mapReduce(
  function m() {
    this.VALUES.forEach(function (value, index) {
      emit(index, value)
    })
  },
  function r(id, values) {
    return Array.sum(values)
  },
  {
    query: {}
  }
)