Mongodb: วิธีใช้ตัวดำเนินการ and ($และ) ในการสืบค้น


คุณสามารถใช้ตัวดำเนินการ $and ใน MongoDB เพื่อค้นหาเอกสารที่ตรงกับหลายเกณฑ์

โอเปอเรเตอร์นี้ใช้ไวยากรณ์พื้นฐานต่อไปนี้:

 db.myCollection.find({
  " $and ": [
    {" 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: 30, 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: ใช้ตัวดำเนินการ AND กับสองฟิลด์

รหัสต่อไปนี้แสดงวิธีการค้นหาเอกสารทั้งหมดในคอลเลกชัน ทีม โดยที่ฟิลด์ “ทีม” เท่ากับ “สเปอร์ส” และค่าของฟิลด์ “คะแนน” มากกว่าหรือเท่ากับ 22:

 db.teams.find({
  " $and ": [
    {" team ": " Spurs "},
    {" points ": { $gte : 22 }}
  ]
})

แบบสอบถามนี้ส่งคืนเอกสารต่อไปนี้:

 { _id: ObjectId("6201824afd435937399d6b6c"),
  team: 'Spurs',
  points: 25,
  rebounds: 5 }
{ _id: ObjectId("6201824afd435937399d6b6d"),
  team: 'Spurs',
  points: 23,
  rebounds: 9 }

โปรดทราบว่าแต่ละเอกสารในเอาต์พุตจะมี “สเปอร์ส” ในช่องทีมและค่าที่มากกว่าหรือเท่ากับ 22 ในช่องคะแนน

ตัวอย่างที่ 2: ใช้ตัวดำเนินการ AND กับช่องมากกว่าสองช่อง

รหัสต่อไปนี้แสดงวิธีค้นหาเอกสารทั้งหมดในคอลเลกชัน ทีม โดยที่ฟิลด์ “ทีม” ไม่เท่ากับ “Mavs” และค่าในฟิลด์ “คะแนน” มากกว่าหรือเท่ากับ 22 และค่าในฟิลด์ “รีบาวน์ » สนามน้อยกว่า 7:

 db.teams.find({
  " $and ": [
    {" team ": { $ne : " Mavs "}},
    {" points ": { $gte : 22 }},
    {" rebounds ": { $lt : 7 }}
  ]
})

แบบสอบถามนี้ส่งคืนเอกสารต่อไปนี้:

 { _id: ObjectId("6201824afd435937399d6b6c"),
  team: 'Spurs',
  points: 25,
  rebounds: 5 }

โปรดทราบว่านี่เป็นเอกสารเดียวในคอลเลกชันที่ตรงตามเกณฑ์ทั้งสามข้อ:

  • ช่อง “ทีม” ไม่เท่ากับ ” Mavs
  • ช่อง “คะแนน” มีค่ามากกว่าหรือเท่ากับ 22
  • ช่อง “รีบาวด์” มีค่าน้อยกว่า 7

หมายเหตุ : คุณสามารถค้นหาเอกสารฉบับเต็มสำหรับฟังก์ชัน $and ได้ที่นี่

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการทั่วไปอื่นๆ ใน MongoDB:

MongoDB: วิธีตรวจสอบว่าฟิลด์มีสตริงหรือไม่
MongoDB: วิธีใช้แบบสอบถาม “NO IN”
MongoDB: วิธีค้นหา “ไม่เป็นโมฆะ” ในฟิลด์เฉพาะ

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

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