【问题标题】:Mongo aggregation: how to sum multidimensional arrayMongo聚合:如何对多维数组求和
【发布时间】:2021-06-25 08:03:37
【问题描述】:

我有一个多维数组的 mongo 文档集合,如下所示:

{ missionsCompleted: [[1,2,3],[1,2,3],[1,2,3]] }

我希望我的 mongo 聚合管道对数组进行求和/合并,以将它们更改为这个更简单的数组:

{ missionsCompleted: [3,6,9] }

我该怎么做?

【问题讨论】:

  • 您可以尝试使用$zip 聚合运算符来转置数组并对每个数组进行求和。

标签: mongodb aggregation-framework


【解决方案1】:
  • $arrayElemAt 从数组中选择特定元素
  • $zip 压缩所有提供的数组
  • $map 迭代压缩数组和数字的数组循环
db.collection.aggregate([
  {
    $project: {
      missionsCompleted: {
        $map: {
          input: {
            $zip: {
              inputs: [
                { $arrayElemAt: ["$missionsCompleted", 0] },
                { $arrayElemAt: ["$missionsCompleted", 1] },
                { $arrayElemAt: ["$missionsCompleted", 2] }
              ]
            }
          },
          in: { $sum: "$$this" }
        }
      }
    }
  }
])

Playground

【讨论】:

  • 谢谢,这很好用!感谢您提供游乐场链接 - 下次该工具将提供很大帮助。
猜你喜欢
  • 1970-01-01
  • 2021-09-17
  • 1970-01-01
  • 2012-11-08
  • 1970-01-01
  • 2014-09-19
  • 2020-08-26
  • 1970-01-01
  • 2018-04-11
相关资源
最近更新 更多