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

¿Cómo puedo obtener Mongo para insertar un número entero?

Gracias

  • la versión de mongodb se utilizan ?
  • Estoy usando 1.8.1
  • jira.mongodb.org/browse/SERVER-854
  • tenga en cuenta que en mi caso , cuando me quise {$conjunto:{val:NumberInt(0)}} en algunos «val» que ya está establecido como Mucho , no cambiarlo. Primero tuve que cambiarlo por algún otro valor , a continuación, cambiar de nuevo a 0 , por la NumberInt(0) para que surta efecto
  • Yo tenía el mismo problema, después de darme cuenta de que me había equivocado cambiado un int32 doble, ajuste de nuevo el uso de NumberInt() no se soluciona el tipo menos que primero se cambió a un valor diferente.
InformationsquelleAutor daydreamer | 2011-11-21

4 Comentarios

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

    También puede utilizar NumberLong.

    • pero en findOne dice NumberLong(0) no como 0
    • De forma predeterminada, el mongo shell trata a todos los números como valores de punto flotante. Así que tenemos que especificar explícitamente qué tipo de número que queremos que use, por ejemplo, NumberInt o NumberLong. docs.mongodb.org/manual/core/shell-types
    • Tengo una pregunta. El NumberInt sólo se proporciona en mongo shell, ¿cómo hacer que en lenguaje JavaScript como node.js?
    • aquí hay una respuesta stackoverflow.com/a/21870772/3815843
    • Es importante tomar en cuenta que los enteros tienen límites. Si el número es grande, considere el uso de NumberLong
    • que cubre long, pero no int. ~Extrañamente, sólo puedo encontrar una Long tipo en el Node.js controlador…~ curiosamente, el entero de 32 bits tipo se llama Int32 en el docs (¿por qué no llaman Long Int64 lugar?)

  2. 16

    Un poco sintaxis más simple (en Robomongo al menos) que funcionó para mí:

    db.database.save({ Year : NumberInt(2015) });
  3. 5

    Si el tipo de valor ya es doble, a continuación, actualizar el valor con $comando set no se puede cambiar el valor de tipo double int cuando se utiliza NumberInt() o NumberLong() función.
    Así que, para Cambiar el tipo de valor, se debe actualizar el registro completo.

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

    Bueno, es JavaScript, así que lo que tienes en el ‘valor’ es un Número, que puede ser un integer o float. Pero no hay realmente una diferencia en JavaScript. De Aprender JavaScript:

    El Tipo De Datos De Número

    Número de tipos de datos en JavaScript son números de punto flotante, pero puede o no puede tener un fraccional componente. Si no tienen un punto decimal o fraccionaria componente, son tratados como números enteros—en base 10 de los números enteros en un rango de -253 253.

    • En realidad eso no es cierto. Mientras que JS no ve la diferencia, tan pronto como se conecta a mongo de otro idioma (por ejemplo, java) va mucho sentir la diferencia.
    • Mi aplicación se ha roto en diferentes puntos sólo por una razón, int se guarda y se devuelve como float. Sospecho que la causa debe ser algún manual inserciones hice a través de mongo shell que utiliza javascript.

Dejar respuesta

Please enter your comment!
Please enter your name here