web-dev-qa-db-fra.com

MongoDB insère une valeur flottante lors de la tentative d'insertion d'un entier

   > db.data.update({'name': 'zero'}, {'$set': {'value': 0}}) 
   > db.data.findOne({'name': 'zero})
    {'name': 'zero', 'value': 0.0}  

Comment faire pour que Mongo insère un entier?

Je vous remercie

177
daydreamer
db.data.update({'name': 'zero'}, {'$set': {'value': NumberInt(0)}})

Vous pouvez également utiliser NumberLong.

279
Bernie Hackett

Une syntaxe légèrement plus simple (du moins dans Robomongo) a fonctionné pour moi:

db.database.save({ Year : NumberInt(2015) });
15
Grid Trekkor

Si le type de valeur est déjà double, alors mettez à jour la valeur avec la commande $ set ne peut pas changer le type de valeur double en int lorsque vous utilisez la fonction NumberInt () ou NumberLong (). Donc, pour changer le type de valeur, il faut mettre à jour tout l'enregistrement.

var re = db.data.find({"name": "zero"})
re['value']=NumberInt(0)
db.data.update({"name": "zero"}, re)
4
Ethan. Zhang