在 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)
您的第一个查询显然不会工作,因为您正在尝试对字符串求和,并且“$$partialAmount”中还有一个额外的“$”。
如果您的partialAmount-s 以“15.00”和“20.00”格式存储,您的第二个查询将起作用,请参阅此处。
如果它们在数据库中保存为“15,00”和“20,00”,您的第二个查询应该抛出错误,而不是返回 0。(如果您实际上得到零结果,那么您的“partialAmount”字段可能是数据库中拼写错误,或者该字段在管道的前一阶段丢失)
在这种情况下,您需要将数据库中的值更改为“20.00”格式,或者如果这不可行,请使用$split和$concat转换为正确的格式,如下所示,然后再转换为 double 并对值求和。