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

时间:2019-10-12 14:38:25

标签: mongodb

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

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

collection.aggregate([
  {
    $group: {
      _id: null,
      sum: { $sum: "$$partialAmount" }
    }
  }
]);

并且:

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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