NumberLong ใน MongoDB Shell
MongoDB ใช้ NumberLong สำหรับจำนวนเต็ม 64-bit (8-byte) เพราะ JavaScript Number เป็น 53-bit เท่านั้น (IEEE 754)
ไวยากรณ์
var variableName = { "fieldName": NumberLong("value") };
ตัวอย่าง
> var userDetail = { "userId": NumberLong("98686869") };
{ "userId": NumberLong(98686869) }
แสดงผล
> userDetail
{ "userId": NumberLong(98686869) }
> printjson(userDetail);
{ "userId": NumberLong(98686869) }
ทำไมต้อง NumberLong?
- JavaScript Number: Safe Integer แค่ 53-bit (±9,007,199,254,740,991)
- MongoDB 64-bit Integer: ต้องการความแม่นยำเต็ม 64-bit
- ส่งเป็น String เข้า NumberLong() เพื่อไม่สูญเสีย Precision
ใน Node.js Driver (MongoDB)
const { Long } = require('mongodb');
const doc = { userId: Long.fromString('98686869') };
หมายเหตุ: ใน MongoDB 4.0+ Shell ใหม่ (mongosh) ใช้ Long() แทน NumberLong()