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

标签 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
    ]
}

最佳答案

作为聚合会很困难,但尝试 map reduce并以索引作为 id 发出每个值。像这样的东西:

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

关于mongodb - 如何在 Mongo 中对 2 个或多个数组的元素求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28302947/

相关文章:

node.js - mongodb 中不区分大小写的 find() 函数与 mongoose

javascript - mongoose vs mongodb(nodejs模块/扩展),哪个更好?为什么?

couchdb - 在 Couchbase/CouchDB 中设计文档之间的关系?

javascript - Mongoose find 和 findOne 返回整个集合

java - Spring Boot Mongo Upsert 数组中的元素

java - mongodb 获取数组值

Redis 分片性能和获取 key 的 o(1) 时间复杂度

mysql - 我需要 GROUP BY、LIMIT、ORDER BY、SUM 等。在动态创建的一组数据上,每次都会有不同的列

sql - 如何在当前基于关系数据库构建的应用程序中实际集成 NoSQL 数据库

java - 可读字节数不足 - 需要 4 个,最大值为 0