sql >> Base de Datos >  >> NoSQL >> MongoDB

Diferencia entre Numberlong(x) y Numberlong(x)

NumberLong(253351454) solo funciona para números que son lo suficientemente pequeños como para que no necesiten ser... bueno, largos:el shell debe representarlos en JS de alguna manera, por lo que solo puede representar números que

Para números más grandes, se requiere una representación textual porque no hay un tipo de datos lo suficientemente grande disponible, por lo tanto, NumberLong("3059300418") con 3059300418 > 253351454 .

En otras palabras, no, no hay diferencia . Es solo una limitación del shell, o más generalmente hablando, de JS y números de punto flotante.

Advertencia:no intente invocar al constructor con un número demasiado grande, es decir, no intente db.foo.insert({"t" : NumberLong(1234657890132456789)}); Dado que ese número es demasiado grande para un doble, provocará errores de redondeo. El número anterior se convertiría a NumberLong("1234657890132456704") , lo cual está mal, obviamente.