พฤติกรรมที่แตกต่างกันของ NumberLong
NumberLong(x) จะปัดเศษค่าที่เกินขีดจำกัด ในขณะที่ NumberLong("x") จะรักษาค่าที่แม่นยำ
ตัวอย่างเปรียบเทียบ
สร้างคอลเลกชันและแทรกค่าตัวเลขขนาดใหญ่ในทั้งสองรูปแบบ:
> db.demo603.insert({"longValue" : NumberLong(988998985857575789)});
WriteResult({ "nInserted" : 1 })
> db.demo603.insert({"longValueInString" : NumberLong("988998985857575789")});
แสดงผลลัพธ์
ใช้ find().pretty() เพื่อดูความแตกต่าง:
> db.demo603.find().pretty();
ผลลัพธ์:
{
"_id" : ObjectId("5e9605e5ed011c280a0905d1"),
"longValue" : NumberLong("988998985857575808")
}
{
"_id" : ObjectId("5e9605faed011c280a0905d2"),
"longValueInString" : NumberLong("988998985857575789")
}
สังเกตว่า longValue ถูกปัดเศษเป็น 988998985857575808 ในขณะที่ longValueInString คงค่าเดิมไว้ได้