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

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *