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

วิธีค้นหาเอกสารที่มีค่า FALSE เท่านั้นใน MongoDB

ใช้ operator $ne (Not Equal) เพื่อกรองเอกสารที่มีค่า boolean field เป็น false

รูปแบบคำสั่ง

db.collectionName.find({ "booleanField": { $ne: true } });

หรือระบุเฉพาะค่า false โดยตรง:

db.collectionName.find({ "booleanField": false });

ตัวอย่างเต็มรูปแบบ

1. สร้างข้อมูลตัวอย่าง

> db.translateDefinitionDemo.insertOne({"_id":10,"StudentName":"Larry","isEnable":true});
> db.translateDefinitionDemo.insertOne({"_id":20,"StudentName":"Chris","isEnable":false});
> db.translateDefinitionDemo.insertOne({"_id":30,"StudentName":"Robert","isEnable":true});
> db.translateDefinitionDemo.insertOne({"_id":40,"StudentName":"Sam","isEnable":false});
> db.translateDefinitionDemo.insertOne({"_id":50,"StudentName":"Mike","isEnable":true});

2. แสดงข้อมูลทั้งหมด

> db.translateDefinitionDemo.find().pretty();
{ "_id" : 10, "StudentName" : "Larry", "isEnable" : true }
{ "_id" : 20, "StudentName" : "Chris", "isEnable" : false }
{ "_id" : 30, "StudentName" : "Robert", "isEnable" : true }
{ "_id" : 40, "StudentName" : "Sam", "isEnable" : false }
{ "_id" : 50, "StudentName" : "Mike", "isEnable" : true }

3. ค้นหาเฉพาะค่า FALSE

> db.translateDefinitionDemo.find({ 
    "_id" : { "$in" : [10, 20, 30, 40, 50] }, 
    "isEnable" : { "$ne" : true } 
}).pretty();
{ "_id" : 20, "StudentName" : "Chris", "isEnable" : false }
{ "_id" : 40, "StudentName" : "Sam", "isEnable" : false }

วิธีที่ง่ายกว่า

> db.translateDefinitionDemo.find({ "isEnable": false }).pretty();

ให้ผลลัพธ์เหมือนกัน แต่เขียนสั้นกว่าและอ่านง่ายกว่า

สรุป

  • ใช้ { field: false } สำหรับค้นหาค่า false โดยตรง (แนะนำ)
  • ใช้ { field: { $ne: true } } เมื่อต้องการ exclude true (รวม null ด้วย)
  • $ne หมายถึง "Not Equal"