> db.data.update({'name': 'zero'}, {'$set': {'value': 0}})
> db.data.findOne({'name': 'zero})
{'name': 'zero', 'value': 0.0}
¿Cómo consigo que Mongo inserte un número entero?
Gracias
> db.data.update({'name': 'zero'}, {'$set': {'value': 0}})
> db.data.findOne({'name': 'zero})
{'name': 'zero', 'value': 0.0}
¿Cómo consigo que Mongo inserte un número entero?
Gracias
Respuestas:
db.data.update({'name': 'zero'}, {'$set': {'value': NumberInt(0)}})
También puedes usar NumberLong.
Una sintaxis un poco más simple (al menos en Robomongo) funcionó para mí:
db.database.save({ Year : NumberInt(2015) });
Si el tipo de valor ya es doble, entonces actualizar el valor con el comando $ set no puede cambiar el tipo de valor doble a int cuando se utiliza la función NumberInt () o NumberLong (). Entonces, para cambiar el tipo de valor, debe actualizar todo el registro.
var re = db.data.find({"name": "zero"})
re['value']=NumberInt(0)
db.data.update({"name": "zero"}, re)
$set
funcionó al menos en Mongo 4.2, así que tal vez esto fue un error.
Bueno, es JavaScript, así que lo que tienes en 'valor' es un Número, que puede ser un número entero o flotante. Pero no hay realmente una diferencia en JavaScript. De Learning JavaScript :
El tipo de datos numéricos
Los tipos de datos numéricos en JavaScript son números de coma flotante, pero pueden tener o no un componente fraccionario. Si no tienen un punto decimal o un componente fraccionario, se tratan como números enteros: números enteros de base 10 en un rango de –2 53 a 2 53 .