> db.data.update({'name': 'zero'}, {'$set': {'value': 0}})
> db.data.findOne({'name': 'zero})
{'name': 'zero', 'value': 0.0}
Comment puis-je faire en sorte que Mongo insère un entier?
Je vous remercie
> db.data.update({'name': 'zero'}, {'$set': {'value': 0}})
> db.data.findOne({'name': 'zero})
{'name': 'zero', 'value': 0.0}
Comment puis-je faire en sorte que Mongo insère un entier?
Je vous remercie
Réponses:
db.data.update({'name': 'zero'}, {'$set': {'value': NumberInt(0)}})
Vous pouvez également utiliser NumberLong.
Une syntaxe légèrement plus simple (dans Robomongo au moins) a fonctionné pour moi:
db.database.save({ Year : NumberInt(2015) });
Si le type de valeur est déjà double, la mise à jour de la valeur avec la commande $ set ne peut pas changer le type de valeur double en int lors de l'utilisation de la fonction NumberInt () ou NumberLong (). Ainsi, pour modifier le type de valeur, il doit mettre à jour l'enregistrement entier.
var re = db.data.find({"name": "zero"})
re['value']=NumberInt(0)
db.data.update({"name": "zero"}, re)
$set
fonctionnait au moins dans Mongo 4.2, donc c'était peut-être un bug.
Eh bien, c'est JavaScript, donc ce que vous avez dans «valeur» est un nombre, qui peut être un entier ou un flottant. Mais il n'y a pas vraiment de différence en JavaScript. De l' apprentissage de JavaScript :
Le type de données numérique
Les types de données numériques en JavaScript sont des nombres à virgule flottante, mais ils peuvent ou non avoir un composant fractionnaire. S'ils n'ont pas de point décimal ou de composant fractionnaire, ils sont traités comme des entiers - des nombres entiers de base 10 dans une plage de –2 53 à 2 53 .