Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

วิธีค้นหาเอกสารที่มีฟิลด์เป็น NaN ใน MongoDB

เพื่อค้นหาเอกสารที่มีฟิลด์เป็น 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 ได้โดยตรง