MongoDB - 聚合总和

时间:2013-08-09 01:16:02

标签: mongodb aggregation-framework

我正在尝试计算在数据库中跟踪的总金额。每个订单文档都包含一个字段“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的经验很少。我此时只介绍了基础知识。

提前谢谢。

1 个答案:

答案 0 :(得分:7)

$sum仅适用于整数,长整数和浮点数。现在,没有运算符可以将字符串解析为数字,尽管这非常有用。你可以按Mongo convert all numeric fields that are stored as string中的描述自己做,但这样做会很慢。

我建议你确保你的应用程序将数字存储为int / long / float,并编写一个脚本来迭代所有文档并更新值。我还建议您在https://jira.mongodb.org/browse/SERVER添加功能请求,以添加将字符串转换为数字的运算符。