ใช้ $expr ร่วมกับ $or เพื่อกรองเอกสารที่ไม่ใช่ทั้งสองฟิลด์เป็น false พร้อมกัน เริ่มต้นด้วยการสร้างคอลเลกชันตัวอย่าง:
> db.orTwoFieldsDemo.insertOne({"isLiveInUS":true,"isMarried":false});
{ "acknowledged" : true, "insertedId" : ObjectId("5cdfd86abf3115999ed5120d") }
> db.orTwoFieldsDemo.insertOne({"isLiveInUS":true,"isMarried":true});
{ "acknowledged" : true, "insertedId" : ObjectId("5cdfd876bf3115999ed5120e") }
> db.orTwoFieldsDemo.insertOne({"isLiveInUS":false,"isMarried":false});
{ "acknowledged" : true, "insertedId" : ObjectId("5cdfd87dbf3115999ed5120f") }
แสดงเอกสารทั้งหมด:
> db.orTwoFieldsDemo.find();
คิวรี่กรองเอกสารที่ ไม่ใช่ ทั้ง isLiveInUS และ isMarried เป็น false (คืออย่างน้อยหนึ่งฟิลด์เป็น true):
> db.orTwoFieldsDemo.find({ $expr: { $or: [ "$isLiveInUS", "$isMarried" ] } });คำอธิบาย:
$exprอนุญาตให้ใช้ตัวดำเนินการ aggregation (เช่น $or) ภายใน find() โดย$or: ["$field1", "$field2"]จะเป็นจริงถ้าอย่างน้อยหนึ่งฟิลด์เป็น true เอกสารที่ทั้งคู่เป็น false จะถูกกรองออก