我能做些什么来在MongoDB中用$inc输出,而不是总是精确到2点的小数?(舍入输出)



所以我使用MongoDB 6.0(以及python中的电机驱动程序(,例如,我有一个类似的代码:

money = 4.92
from_snowflake = "19251"
await db["bank"].update_one({"snowflake": str(from_snowflake)}, {"$inc": {"balance": -float(money)}})

并且假设当前值"0";余额";db中的字段为5.91,最终值将为0.9900000000000002,当我希望它为0.99

我能做什么,这样mongodb就会自动";四舍五入";这个输出到2点精度?

要为金融应用程序保留数字保真度,需要使用Decimal128 BSON类型。pymongo支持如下:

from pymongo import MongoClient
from bson.decimal128 import Decimal128
db = MongoClient()['mydatabase']
money = Decimal128('-4.92')
from_snowflake = "19251"
db["bank"].insert_one({"snowflake": from_snowflake, "balance": Decimal128('5.91')})
db["bank"].update_one({"snowflake": str(from_snowflake)}, {"$inc": {"balance": money}})
print(db["bank"].find_one({}, {'_id': 0}))

打印:

{'snowflake': '19251', 'balance': Decimal128('0.99')}