บทนี้นำเสนอตัวดำเนินการตรรกะของ MongoDB ที่คล้ายกับเงื่อนไข "และ" และ "หรือ" ใน SQL

ตัวดำเนินการตรรกะที่รองรับโดย MongoDB

ตัวดำเนินการ คำอธิบาย
$and ตรงกับเอกสารที่ทำการตรรกะทุกเงื่อนไขที่กำหนดไว้ คล้ายกับเงื่อนไข "และ" ใน SQL
$not ดำเนินการ NOT ตรรกะบนสมการที่ระบุ
$or ตรงกับเอกสารที่ทำการตรรกะอย่างน้อยหนึ่งในเงื่อนไขที่กำหนดไว้ คล้ายกับเงื่อนไข "หรือ" ใน SQL
$nor ตรงกับเอกสารที่ไม่ทำการตรรกะทั้งสองเงื่อนไขที่กำหนดไว้

$and

รูปแบบ:

{ $and: [ { <expression1> }, { <expression2> }, ... , { <expressionN> } ] }

อธิบาย:

  • คือ สมการย่อย
  • $and รับอาเรย์ที่มีกลุ่มของสมการย่อย และทุกๆ สมการย่อยจะต้องผลตรงกับเงื่อนไขทั้งหมด

ตัวอย่าง:

db.inventory.find( { $and: [ { qty: { $lt : 10 } }, { qty : { $gt: 50 } }] } )

SQL เทียบเท่า:

select * from inventory where qty > 50 and qty < 10

$not

db.inventory.find( { price: { $not: { $gt: 1.99 } } } )

อธิบาย:

  • หากเงื่อนไขคือ price > 1.99, การดำเนินการ NOT จะเป็น price <= 1.99
  • นั่นหมายความว่าการค้นหาเอกสารที่มี price น้อยกว่าหรือเท่ากับ 1.99 หรือที่ฟิลด์ price ไม่มีอยู่

คล้ายกับ SQL:

select * from inventory where price <= 1.99

$or

คล้ายกับเงื่อนไข "หรือ" ใน SQL รูปแบบ:

{ $or: [ { <expression1> }, { <expression2> }, ... , { <expressionN> } ] }

อธิบาย:

  • คือ สมการย่อย
  • $or รับอาเรย์ที่มีกลุ่มของสมการย่อย และทุกๆ สมการย่อยจะต้องมีผลตรงกับเงื่อนไขอย่างน้อยหนึ่ง

ตัวอย่าง:

db.inventory.find( { $or: [ { quantity: { $lt: 20 } }, { price: 10 } ] } )

SQL เทียบเท่า:

select * from inventory where quantity < 20 or price=10

$nor

ดำเนินการ NOR ตรรกะ รูปแบบ:

{ $nor: [ { <expression1> }, { <expression2> }, ... , { <expressionN> } ] }

ตัวอย่าง:

db.inventory.find( { $nor: [ { price: 1.99 }, { sale: true } ]  } )

อธิบาย:

  • price != 1.99 และ sale != true, หรือ
  • price != 1.99 และฟิลด์ sale ไม่มีอยู่, หรือ
  • ฟิลด์ price ไม่มีอยู่ และ sale != true