在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"
}
}
}
}
]);
答案 0 :(得分:2)
您的第一个查询显然无法正常工作,因为您正尝试对字符串求和,并且在“ $$ partialAmount”中还有一个额外的“ $”。
如果您的partialAmount-s以“ 15.00”和“ 20.00”的格式存储,则第二个查询将起作用,请参见here。
如果在数据库中将它们另存为“ 15,00”和“ 20,00”,则第二个查询应引发错误,而不是返回0。(如果实际上得到的结果为零,则可能是“ partialAmount” “字段在数据库中拼写错误,或者该字段在管道的前一阶段丢失了
在这种情况下,您需要将数据库中的值更改为“ 20.00”格式,或者如果不可行,请使用$split和$concat转换为正确的格式,例如{{ 3}},然后再转换为两倍并求和。