【问题标题】:How to $sum by index of sub-array如何按子数组的索引求和
【发布时间】:2021-11-08 16:02:38
【问题描述】:

如何通过子数组的索引求和

代码不起作用。

db.getCollection("test").aggregate([
  { $unwind: "$asks" },
  {
    $groups: {
      _id: 0,
      total: { $sum: { $arrayElemAt: ["$asks", 1] } },
      count: { $sum: 1 },
    },
  },
]);

非常感谢

【问题讨论】:

  • 数字为string类型,求和前先转换成double类型,total: { $sum: { $toDouble: { $arrayElemAt: ["$asks", 1] } } },

标签: mongodb mongodb-query


【解决方案1】:
  1. 您的代码中有错字。将 $groups 更改为 $group
  2. 将字符串值转换为双精度值,然后计算总和
  3. 根据您的图像,您应该使用索引 0,而不是索引 1

Test Here

db.collection.aggregate([
  {
    $unwind: "$asks"
  },
  {
    $group: {
      _id: 0,
      total: {
        $sum: {
          "$toDouble": {
            "$arrayElemAt": [ "$asks", 0 ]
          }
        },
      },
    },
  }
])

【讨论】:

    猜你喜欢
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 2019-03-11
    • 2013-05-21
    • 2015-02-27
    相关资源
    最近更新 更多