NumberLong(253351454)
работи само за числа, които са достатъчно малки, за да не е необходимо да бъдат ... добре, дълги:Шелът трябва да ги представя в JS по някакъв начин, така че може да представя само числа, които
За по-големи числа е необходимо текстово представяне, тъй като няма наличен достатъчно голям тип данни, следователно NumberLong("3059300418")
с 3059300418 > 253351454
.
С други думи, не, няма разлика . Това е просто ограничение на обвивката или по-общо казано на JS и числата с плаваща запетая.
Предупреждение:Не се опитвайте да извиквате конструктора с твърде голямо число, т.е. не опитвайте db.foo.insert({"t" : NumberLong(1234657890132456789)});
Тъй като това число е твърде голямо за двойно, то ще доведе до грешки при закръгляване. Горното число ще бъде преобразувано в NumberLong("1234657890132456704")
, което очевидно е грешно.