【问题标题】:Python - Pymongo MongoDB 3.4 - NumberDecimalPython - Pymongo MongoDB 3.4 - NumberDecimal
【发布时间】:2017-11-01 04:26:36
【问题描述】:

我正在使用 mongodb 3.4 向我的数据库中插入适当的价格..

根据:

https://github.com/mongodb/specifications/blob/master/source/bson-decimal128/decimal128.rst#reading-from-extended-json

我在我的 python 代码中使用了这个:

'credits': {'$numberDecimal': Decimal128('9.99')},

但抛出:

bson.errors.InvalidDocument: key '$numberDecimal' must not start with '$'

那么在 mongodb 中使用 python 插入 numberdecimal 的正确语法是什么?

感谢和问候

【问题讨论】:

    标签: python mongodb numbers decimal pymongo


    【解决方案1】:

    简单地说:

    collection.insert_one({'credits': Decimal128('9.99')})
    

    (“$numberDecimal”语法用于在 JSON 字符串中表示十进制数。但您根本没有使用 JSON。)

    【讨论】:

      【解决方案2】:

      您提供的链接告诉您从扩展 JSON 中读取。如果你想将它作为小数插入,你应该使用:

      { 'credits': '{0:.2f}'.format(9.99) }
      

      '{0:.2f}'.format(9.99) 部分会将您传递的数字(在本例中为 9.99)格式化为每次包含 2 个小数。所以'{0:.2f}'.format(9) 应该会在您的数据库中生成 9.00。

      【讨论】:

      • 你的语法适用于 9.99... 但我总是需要它来插入双精度,也适用于 "9" 和 "9.00" ,你知道吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-04
      • 2011-04-23
      • 1970-01-01
      • 2020-08-06
      • 2018-08-15
      • 2010-12-17
      • 2022-01-14
      相关资源
      最近更新 更多