Saltar al contenido

¿Diferencias de MongoDB entre NumberLong y Integer simple?

Solución:

NumberInt

De forma predeterminada, el shell mongo trata todos los números como valores de punto flotante. La cáscara de mongo proporciona el NumberInt() constructor para especificar explícitamente enteros de 32 bits.

Número Largo

De forma predeterminada, el shell mongo trata todos los números como valores de punto flotante. La cáscara de mongo proporciona el NumberLong() class para manejar enteros de 64 bits.

los NumberLong() constructor acepta el long como una cadena:

NumberLong("2090845886852")

Fuente: http://docs.mongodb.org/manual/core/shell-types/

NumberLong y NumberInt no son tipos de datos en MongoDB sino funciones de JavaScript en el shell de MongoDB.

Los tipos de datos en MongoDB se definen en la especificación BSON: http://bsonspec.org/spec.html

Los números se almacenan como tipo 0x01 (punto flotante), tipo 0x10 (entero de 32 bits) o tipo 0x12 (entero de 64 bits).

Si inserta o actualiza un documento en el shell de MongoDB, entonces NumberLong crea un entero de 64 bits, NumberInt crea un entero de 32 bits y un número JavaScript normal crea un valor de punto flotante. Esto se debe a que no hay números enteros en JavaScript, solo números de punto flotante.

La salida en el shell de MongoDB muestra números de punto flotante y enteros de 32 bits como números de JavaScript, mientras que los enteros de 64 bits se muestran como llamadas a NumberLong:

> db.inttest.insert({f: 1234, i: NumberInt("1234"), l: NumberLong("1234")})
> db.inttest.findOne()
{
        "_id" : ObjectId("5396fc0db8e0b3e2dedb59b0"),
        "f" : 1234,
        "i" : 1234,
        "l" : NumberLong(1234)
}

Los diferentes controladores de MongoDB proporcionan diferentes métodos para insertar diferentes tipos de números. Por ejemplo, el controlador C ++ crea un entero de 64 bits si agrega un long long valor a un BSONObjectBuilder.

Las consultas coinciden siempre que los números sean iguales. En el ejemplo anterior, las consultas

> db.inttest.find({i:1234})
> db.inttest.find({l:1234})
> db.inttest.find({f:1234})
> db.inttest.find({i:NumberLong("1234")})
> db.inttest.find({l:NumberLong("1234")})
> db.inttest.find({f:NumberLong("1234")})

todos coinciden con el documento insertado.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *