บทนี้นำเสนอตัวดำเนินการตรรกะของ 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