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ě.