NumberLong(253351454)
virker kun for tal, der er små nok til, at de ikke behøver at være ... ja, lange:Skallen skal repræsentere dem i JS på en eller anden måde, så den kan kun repræsentere tal, der
For større tal kræves en tekstlig repræsentation, fordi der ikke er nogen stor nok datatype tilgængelig, derfor NumberLong("3059300418")
med 3059300418 > 253351454
.
Med andre ord, nej, der er ingen forskel . Det er blot en begrænsning af skallen, eller mere generelt set, af JS- og flydende kommatal.
Advarsel:Forsøg ikke at kalde konstruktøren med et for stort tal, dvs. prøv ikke db.foo.insert({"t" : NumberLong(1234657890132456789)});
Da det tal er alt for stort til en fordobling, vil det forårsage afrundingsfejl. Ovenstående tal vil blive konverteret til NumberLong("1234657890132456704")
, hvilket naturligvis er forkert.