NumberLong(253351454)
hanya berfungsi untuk angka yang cukup kecil sehingga tidak perlu ... yah, panjang:Shell harus mewakilinya di JS, jadi itu hanya bisa mewakili angka yang
Untuk angka yang lebih besar, representasi tekstual diperlukan karena tidak tersedia tipe data yang cukup besar, oleh karena itu NumberLong("3059300418")
dengan 3059300418 > 253351454
.
Dengan kata lain, tidak, tidak ada perbedaan . Itu hanya batasan shell, atau lebih umum lagi, dari JS dan angka floating point.
Peringatan:Jangan mencoba untuk memanggil konstruktor dengan jumlah yang terlalu besar, yaitu jangan mencoba db.foo.insert({"t" : NumberLong(1234657890132456789)});
Karena angka itu terlalu besar untuk dobel, itu akan menyebabkan kesalahan pembulatan. Angka di atas akan dikonversi menjadi NumberLong("1234657890132456704")
, yang salah, jelas.