我有一些类似的数据:

{id: 1, myData: [[2, 0, 0], [0, 0, 0, 3, 0, 0], [1, 0, 0, 1, 0, 0, 1, 0, 0]]}
{id: 2, myData: [[11, 0, 0], [0, 0, 0], [1, 1, 2]]}

我需要将每个数组中的所有数字求和为唯一的总值.

请注意,情况并非如此.

[{id:1, sumData: 8}
{id:2, sumData: 15}]

我试图通过群聚合进行修复,但不起作用:

{
    $group:
        {
        _id: "$id",
        myDataSum: {
          $sum: "$myData",
        },
      },
}

我如何才能获得所有字段的总和?

推荐答案

一种 Select 是在$reduce中使用$sum:

db.collection.aggregate([
  {$project: {
      sumData: {$reduce: {
          input: "$myData",
          initialValue: 0,
          in: {$add: [
              "$$value",
              {$sum: "$$this"}
          ]}
      }}
  }}
])

看看它在playground example号公路上是如何工作的

Mongodb相关问答推荐

如何在Mongo Aggregate Query中创建集合的对象ID数组,并在列表中查找另一个集合中的ID

Go mongo-驱动程序测试,FindOne未根据给定的筛选器返回正确结果

如何将数组$拉到对象数组下

Mongo,通过 Lookup 计算多个文档中数组中的项目

Mongo按最大分组排序

优化游戏应用程序的反馈表单后端设计

Golang 无法在 MongoDB 中创建文档

如何在 go mongo-driver 中为 options.FindOne() 设置限制

Mongodb聚合中基于其他字段值的多个条件的动态新字段值

如何聚合过滤器嵌套文档并从其他字段中获取值

MongoDB 查询以包含多个字段的最常见值的计数

加载时将 mongo 存储的日期转换回自 Unix 纪元以来的毫秒数?

Mongodb 约定包

`fields cannot be identical'和''` mongoimport错误

C# mongodb driver 2.0 - 如何在批量操作中更新插入?

mongo - Ruby连接问题

Mongo按实际上是数字的字符串值排序

在 mongodb 中的索引列上查找重复项的快速方法

如何在 Meteor 应用程序之间共享 MongoDB 集合?

MongoDb 连接被拒绝