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

รูปแบบคำสั่งสำหรับ Boolean Values ใน MongoDB

Query Boolean Field ด้วย $eq และ $ne

ใน MongoDB ค่า Boolean คือ true และ false สามารถ Query ได้โดยตรงหรือใช้โอเปอเรเตอร์เปรียบเทียบ

ตัวอย่างข้อมูล

> db.booleanQueryDemo.insertOne({"UserName":"John","UserAge":23,"isMarried":true});
> db.booleanQueryDemo.insertOne({"UserName":"Chris","UserAge":21,"isMarried":false});
> db.booleanQueryDemo.insertOne({"UserName":"Robert","UserAge":24,"isMarried":false});
> db.booleanQueryDemo.insertOne({"UserName":"David","UserAge":26,"isMarried":true});

Case 1: หาค่าเท่ากับ false (ใช้ $eq)

> db.booleanQueryDemo.find({isMarried: {$eq: false}}).pretty();

ผลลัพธ์: Chris, Robert

{ "UserName" : "Chris", "UserAge" : 21, "isMarried" : false }
{ "UserName" : "Robert", "UserAge" : 24, "isMarried" : false }

Case 2: หาค่าไม่เท่ากับ false = true (ใช้ $ne)

> db.booleanQueryDemo.find({isMarried: {$ne: false}}).pretty();

ผลลัพธ์: John, David

{ "UserName" : "John", "UserAge" : 23, "isMarried" : true }
{ "UserName" : "David", "UserAge" : 26, "isMarried" : true }

วิธีเขียนสั้นกว่า (Implicit)

// หา true
db.booleanQueryDemo.find({ isMarried: true });
db.booleanQueryDemo.find({ isMarried: { $eq: true } });

// หา false
db.booleanQueryDemo.find({ isMarried: false });
db.booleanQueryDemo.find({ isMarried: { $eq: false } });

// หาไม่ใช่ true (คือ false หรือ null หรือ missing)
db.booleanQueryDemo.find({ isMarried: { $ne: true } });

ข้อควรระวัง: Null และ Missing Field

คิวรีMatch trueMatch falseMatch nullMatch Missing
{ isMarried: true }✅❌❌❌
{ isMarried: false }❌✅❌❌
{ isMarried: { $ne: true } }❌✅✅✅
{ isMarried: { $eq: false } }❌✅✅❌
{ isMarried: { $in: [false, null] } }❌✅✅❌

แนวทางปฏิบัติที่ดี

  • ใช้ { field: true } หรือ { field: false } สำหรับ Exact Match
  • ใช้ { field: { $exists: true, $eq: true } } ถ้าต้องการบังคับให้มีฟิลด์นั้น
  • ตั้ง Default Value ให้ฟิลด์ Boolean ไว้ใน Application Layer