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: วิธีค้นหา “ไม่เป็นโมฆะ” ในฟิลด์เฉพาะ