在Mongodb中使用$trunc或$round不能保证小数点后2位

在Mongodb中使用$trunc或$round不能保证小数点后2位,mongodb,aggregation-framework,aggregate-functions,Mongodb,Aggregation Framework,Aggregate Functions,我有这样的东西 “金额”:{“值”:{“$trunc”:[“$Amount”,2]}使用小数128: MongoDB Enterprise ruby-driver-rs:PRIMARY> db.foo.insert({a:NumberDecimal('1.2020')}) WriteResult({ "nInserted" : 1 }) MongoDB Enterprise ruby-driver-rs:PRIMARY> db.foo.aggregate([{$

我有这样的东西

“金额”:{“值”:{“$trunc”:[“$Amount”,2]}
使用小数128:

MongoDB Enterprise ruby-driver-rs:PRIMARY> db.foo.insert({a:NumberDecimal('1.2020')})
WriteResult({ "nInserted" : 1 })
MongoDB Enterprise ruby-driver-rs:PRIMARY> db.foo.aggregate([{$project:{v:{$trunc:['$a',2]}}}])
{ "_id" : ObjectId("5f36d9ccad0dd0c8ef1cc0e2"), "v" : NumberDecimal("1.20") }

所以我继续解决它,希望它对将来的人有帮助。这是我的答案。你可以使用$trunc或$round


{“金额”:{“值”:{“$toString”:{“$trunc”:[{“$toDecimal”:“$Amount”},2]}}
您需要查看数字格式。$trunc简单地丢弃了不必要的精度。我查看了文档,但找不到数字格式。您能给我指一下吗?我不知道MongoDB是否在服务器端提供此功能。我希望这是聚合管道的一部分,在聚合管道中,我们可以简单地用两个数字输出数字我将这些管道直接传送到api,而不控制数据(或配置数据)。感谢D.SM。它明确指出了我的想法,因为很明显,没有直接的方法来解决它。