4

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

先感谢您。

4

1 回答 1

7

$sum仅适用于整数、长整数和浮点数。目前,没有运算符可以将字符串解析为数字,尽管这非常有用。您可以按照Mongo 中的说明自行执行此操作,将存储为字符串的所有数字字段转换为字符串,但这会很慢。

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

于 2013-08-09T10:28:52.053 回答