เพื่อค้นหาเอกสารที่มีฟิลด์เป็น NaN (Not a Number) ใน MongoDB ใช้ไวยากรณ์ดังนี้:
db.yourCollectionName.find( { yourFieldName: NaN })
ตัวอย่างการใช้งาน
สร้างคอลเลกชันพร้อมข้อมูลที่มีการหารด้วยศูนย์ (สร้าง NaN และ Infinity):
> db.nanDemo.insertOne({"Score":0/0});
{ "acknowledged" : true, "insertedId" : ObjectId("5ca251a26304881c5ce84b8a") }
> db.nanDemo.insertOne({"Score":10/5});
{ "acknowledged" : true, "insertedId" : ObjectId("5ca2520e6304881c5ce84b8b") }
> db.nanDemo.insertOne({"Score":20/0});
{ "acknowledged" : true, "insertedId" : ObjectId("5ca252156304881c5ce84b8c") }
> db.nanDemo.insertOne({"Score":0/20});
{ "acknowledged" : true, "insertedId" : ObjectId("5ca2521e6304881c5ce84b8d") }
แสดงเอกสารทั้งหมด:
> db.nanDemo.find().pretty();
ผลลัพธ์:
{ "_id" : ObjectId("5ca251a26304881c5ce84b8a"), "Score" : NaN }
{ "_id" : ObjectId("5ca2520e6304881c5ce84b8b"), "Score" : 2 }
{ "_id" : ObjectId("5ca252156304881c5ce84b8c"), "Score" : Infinity }
{ "_id" : ObjectId("5ca2521e6304881c5ce84b8d"), "Score" : 0 }
ค้นหาเอกสารที่ Score เป็น NaN
> db.nanDemo.find( { Score: 0/0 } );
ผลลัพธ์:
{ "_id" : ObjectId("5ca251a26304881c5ce84b8a"), "Score" : NaN }
วิธีทางเลือก (ใช้ NaN โดยตรง):
> db.nanDemo.find( { Score: NaN } )
ผลลัพธ์เหมือนกัน:
{ "_id" : ObjectId("5ca251a26304881c5ce84b8a"), "Score" : NaN }
หมายเหตุ: NaN ไม่เท่ากับตัวเองใน JavaScript (NaN !== NaN) แต่ MongoDB จัดการให้สามารถคิวรี่ด้วย NaN หรือ 0/0 ได้โดยตรง