NumberLong(253351454)
chỉ hoạt động với các số đủ nhỏ mà chúng không cần phải ... tốt, dài:Trình bao phải đại diện cho chúng trong JS bằng cách nào đó, vì vậy nó chỉ có thể đại diện cho các số
Đối với các số lớn hơn, cần có biểu diễn dạng văn bản vì không có sẵn kiểu dữ liệu đủ lớn, do đó NumberLong("3059300418")
với 3059300418 > 253351454
.
Nói cách khác, không, không có gì khác biệt . Đó chỉ là một hạn chế của shell, hay nói một cách tổng quát hơn, của JS và số dấu phẩy động.
Lưu ý:Đừng cố gọi hàm tạo với một số quá lớn, tức là đừng thử db.foo.insert({"t" : NumberLong(1234657890132456789)});
Vì con số đó quá lớn so với một con số gấp đôi, nó sẽ gây ra lỗi làm tròn. Số trên sẽ được chuyển đổi thành NumberLong("1234657890132456704")
, rõ ràng là sai.