Mongodb: วิธีใช้ตัวดำเนินการ or ($หรือ) ในการสืบค้น
คุณสามารถใช้ตัวดำเนินการ $or ใน MongoDB เพื่อค้นหาเอกสารที่ตรงกับเกณฑ์ใดก็ได้จากหลายเกณฑ์
โอเปอเรเตอร์นี้ใช้ไวยากรณ์พื้นฐานต่อไปนี้:
db.myCollection.find({
“ $or ”: [
{" field1 ": " hello "},
{" field2 ": { $gte : 10 }}
]
})
ตัวอย่างเฉพาะนี้ค้นหาเอกสารทั้งหมดในคอลเลกชันชื่อ myCollection โดยที่ field1 เท่ากับ “hello” หรือ field2 มีค่ามากกว่าหรือเท่ากับ 10
ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติกับ ทีม เรียกเก็บเงิน ที่มีเอกสารต่อไปนี้:
db.teams.insertOne({team: " Mavs ", points: 30, rebounds: 8})
db.teams.insertOne({team: " Mavs ", points: 35, rebounds: 12})
db.teams.insertOne({team: " Spurs ", points: 20, rebounds: 7})
db.teams.insertOne({team: " Spurs ", points: 25, rebounds: 5})
db.teams.insertOne({team: " Spurs ", points: 23, rebounds: 9})
ตัวอย่างที่ 1: ใช้ตัวดำเนินการ OR กับสองฟิลด์
รหัสต่อไปนี้แสดงวิธีการค้นหาเอกสารทั้งหมดในคอลเลกชัน ทีม โดยที่ฟิลด์ “ทีม” เท่ากับ “สเปอร์ส” หรือ ค่าของฟิลด์ “คะแนน” มากกว่าหรือเท่ากับ 31:
db.teams.find({
“ $or ”: [
{" team ": " Spurs "},
{" points ": { $gte : 31 }}
]
})
แบบสอบถามนี้ส่งคืนเอกสารต่อไปนี้:
{ _id: ObjectId("62018750fd435937399d6b6f"),
team: 'Mavs',
points: 35,
rebounds: 12 }
{ _id: ObjectId("62018750fd435937399d6b70"),
team: 'Spurs',
points: 20,
rebounds: 7 }
{ _id: ObjectId("62018750fd435937399d6b71"),
team: 'Spurs',
points: 25,
rebounds: 5 }
{ _id: ObjectId("62018750fd435937399d6b72"),
team: 'Spurs',
points: 23,
rebounds: 9 }
โปรดทราบว่าแต่ละเอกสารในเอาต์พุตมี “สเปอร์ส” ในช่องทีม หรือ ค่าที่มากกว่าหรือเท่ากับ 31 ในช่องคะแนน
ตัวอย่างที่ 2: การใช้ตัวดำเนินการ OR ที่มีมากกว่าสองฟิลด์
รหัสต่อไปนี้แสดงวิธีค้นหาเอกสารทั้งหมดในคอลเลกชัน ทีม โดยที่ฟิลด์ “ทีม” เท่ากับ “Mavs” หรือ ค่าของฟิลด์ “คะแนน” มากกว่าหรือเท่ากับ 25 หรือ ค่าของฟิลด์ “รีบาวน์” น้อยกว่า 8:
db.teams.find({
“ $or ”: [
{" team ": " Mavs "},
{" points ": { $gte : 25 }},
{" rebounds ": { $lt : 8 }}
]
})
แบบสอบถามนี้ส่งคืนเอกสารต่อไปนี้:
{ _id: ObjectId("62018750fd435937399d6b6e"),
team: 'Mavs',
points: 30,
rebounds: 8 }
{ _id: ObjectId("62018750fd435937399d6b6f"),
team: 'Mavs',
points: 35,
rebounds: 12 }
{ _id: ObjectId("62018750fd435937399d6b70"),
team: 'Spurs',
points: 20,
rebounds: 7 }
{ _id: ObjectId("62018750fd435937399d6b71"),
team: 'Spurs',
points: 25,
rebounds: 5 }
โปรดทราบว่าเอกสารแต่ละฉบับเหล่านี้มีคุณสมบัติตรงตามเกณฑ์หนึ่งข้อขึ้นไปจากสามเกณฑ์:
- ช่อง “ทีม” เท่ากับ ” Mavs “
- ช่อง “คะแนน” มีค่ามากกว่าหรือเท่ากับ 25
- ช่อง “รีบาวด์” มีค่าน้อยกว่า 8
หมายเหตุ : คุณสามารถค้นหาเอกสารฉบับเต็มสำหรับฟังก์ชัน $or ได้ที่นี่
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการทั่วไปอื่นๆ ใน MongoDB:
MongoDB: วิธีใช้ตัวดำเนินการ AND ในการสืบค้น
MongoDB: วิธีตรวจสอบว่าฟิลด์มีสตริงหรือไม่
MongoDB: วิธีใช้แบบสอบถาม “NO IN”
MongoDB: วิธีค้นหา “ไม่เป็นโมฆะ” ในฟิลด์เฉพาะ