我正在尝试计算在数据库中跟踪的总金额。每个订单文档都包含一个字段“total_price”
我正在尝试使用以下代码:
db.orders.aggregate({
$group: {
_id: null,
total: {$sum: "$total_price"}
}
})
不幸的是,我得到的唯一输出是:{ "result" : [ { "_id" : null, "total" : 0 } ], "ok" : 1 }
但是为了验证实际上存储了数字数据,而不是总计:db.orders.find()[0].total_price
这导致8.99
非常感谢任何帮助。我使用MongoDB的经验很少。我此时只介绍了基础知识。
提前谢谢。
答案 0 :(得分:7)
$sum
仅适用于整数,长整数和浮点数。现在,没有运算符可以将字符串解析为数字,尽管这非常有用。你可以按Mongo convert all numeric fields that are stored as string中的描述自己做,但这样做会很慢。
我建议你确保你的应用程序将数字存储为int / long / float,并编写一个脚本来迭代所有文档并更新值。我还建议您在https://jira.mongodb.org/browse/SERVER添加功能请求,以添加将字符串转换为数字的运算符。