如何计算mongodb中字符串的总和?

gau*_*uri 3 mongodb

在 mongodb 中,我想计算partialAmount类型字段的总和string,并且在此字段中值存储为"20,00""15,00"

如何计算所有值的总和。我尝试过的两个查询都返回 0。

collection.aggregate([
  {
    $group: {
      _id: null,
      sum: { $sum: "$$partialAmount" }
    }
  }
]);
Run Code Online (Sandbox Code Playgroud)

和:

collection.aggregate([
  {
    $group: {
      _id: null,
      totalAmount: {
        $sum: {
          $toDouble: "$partialAmount"
        }
      }
    }
  }
]);
Run Code Online (Sandbox Code Playgroud)

r.d*_*lic 5

您的第一个查询显然不会工作,因为您正在尝试对字符串求和,并且“$$partialAmount”中还有一个额外的“$”。

如果您的partialAmount-s 以“15.00”和“20.00”格式存储,您的第二个查询将起作用,请参阅此处

如果它们在数据库中保存为“15,00”和“20,00”,您的第二个查询应该抛出错误,而不是返回 0。(如果您实际上得到零结果,那么您的“partialAmount”字段可能是数据库中拼写错误,或者该字段在管道的前一阶段丢失)

在这种情况下,您需要将数据库中的值更改为“20.00”格式,或者如果这不可行,请使用$split$concat转换为正确的格式,如下所示然后再转换为 double 并对值求和。