MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Différence entre Numberlong(x) et Numberlong(x)

NumberLong(253351454) ne fonctionne que pour les nombres qui sont suffisamment petits pour qu'ils n'aient pas besoin d'être ... eh bien, long :le shell doit les représenter en JS d'une manière ou d'une autre, il ne peut donc représenter que des nombres qui

Pour les nombres plus grands, une représentation textuelle est requise car il n'y a pas de type de données suffisamment grand disponible, d'où NumberLong("3059300418") avec 3059300418 > 253351454 .

En d'autres termes, non, il n'y a pas de différence . C'est juste une limitation du shell, ou plus généralement, de JS et des nombres à virgule flottante.

Avertissement :N'essayez pas d'invoquer le constructeur avec un nombre trop grand, c'est-à-dire n'essayez pas db.foo.insert({"t" : NumberLong(1234657890132456789)}); Étant donné que ce nombre est beaucoup trop grand pour un double, cela entraînera des erreurs d'arrondi. Le numéro ci-dessus serait converti en NumberLong("1234657890132456704") , ce qui est faux, évidemment.