NumberLong(253351454)
funguje pouze pro čísla, která jsou dostatečně malá na to, aby nemusela být ... no, dlouhá:Shell je musí nějak reprezentovat v JS, takže může reprezentovat pouze čísla, která
Pro větší čísla je vyžadována textová reprezentace, protože není k dispozici dostatečně velký datový typ, proto NumberLong("3059300418")
s 3059300418 > 253351454
.
Jinými slovy, ne, není v tom žádný rozdíl . Je to jen omezení shellu, nebo obecněji řečeno, JS a čísel s pohyblivou řádovou čárkou.
Upozornění:Nepokoušejte se vyvolat konstruktor s příliš velkým číslem, tj. nezkoušejte db.foo.insert({"t" : NumberLong(1234657890132456789)});
Vzhledem k tomu, že toto číslo je příliš velké pro dvojnásobek, způsobí zaokrouhlovací chyby. Výše uvedené číslo by bylo převedeno na NumberLong("1234657890132456704")
, což je samozřejmě špatně.