MongoDB inserts float when trying to insert integer

前端 未结 4 1191
小蘑菇
小蘑菇 2020-12-12 13:08
   > db.data.update({\'name\': \'zero\'}, {\'$set\': {\'value\': 0}}) 
   > db.data.findOne({\'name\': \'zero})
    {\'name\': \'zero\', \'value\': 0.0}  


        
相关标签:
4条回答
  • 2020-12-12 13:37

    Well, it's JavaScript, so what you have in 'value' is a Number, which can be an integer or a float. But there's not really a difference in JavaScript. From Learning JavaScript:

    The Number Data Type

    Number data types in JavaScript are floating-point numbers, but they may or may not have a fractional component. If they don’t have a decimal point or fractional component, they’re treated as integers—base-10 whole numbers in a range of –253 to 253.

    0 讨论(0)
  • 2020-12-12 13:41

    If the value type is already double, then update the value with $set command can not change the value type double to int when using NumberInt() or NumberLong() function. So, to Change the value type, it must update the whole record.

    var re = db.data.find({"name": "zero"})
    re['value']=NumberInt(0)
    db.data.update({"name": "zero"}, re)
    
    0 讨论(0)
  • 2020-12-12 13:53

    A slightly simpler syntax (in Robomongo at least) worked for me:

    db.database.save({ Year : NumberInt(2015) });
    
    0 讨论(0)
  • 2020-12-12 13:58
    db.data.update({'name': 'zero'}, {'$set': {'value': NumberInt(0)}})
    

    You can also use NumberLong.

    0 讨论(0)
提交回复
热议问题