Mongodb: วิธีใช้แบบสอบถาม "not in"


คุณสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อค้นหาเอกสารทั้งหมดที่มีค่าของฟิลด์ใดฟิลด์หนึ่งไม่อยู่ในรายการค่าที่กำหนด:

 db.collection.find({field1: { $nin : [" value1 ", " value2 ", " value3 "]}}) 

แบบสอบถามเฉพาะนี้จะค้นหาเอกสารทั้งหมดที่ค่าของ ฟิลด์ 1 ไม่เท่ากับ value1, value2 หรือ value3

ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติ

ตัวอย่างที่ 1: ข้อความค้นหา “NOT IN” ที่มีค่า

สมมติว่าเรามี ทีมงาน เรียกเก็บเงินพร้อมเอกสารดังต่อไปนี้:

 db.teams.insertOne({team: " Mavs ", position: " Guard ", points: 31 })
db.teams.insertOne({team: " Spurs ", position: " Guard ", points: 22 })
db.teams.insertOne({team: " Rockets ", position: " Center ", points: 19 })
db.teams.insertOne({team: " Warriors ", position: " Forward ", points: 26 })
db.teams.insertOne({team: " Cavs ", position: " Guard ", points: 33 })

เราสามารถใช้โค้ดต่อไปนี้เพื่อค้นหาเอกสารทั้งหมดที่ช่อง “ทีม” ไม่เท่ากับค่า “Rockets”:

 db.teams.find({team: { $nin : [" Rockets "]}}) 

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

 { _id: ObjectId("619527e467d6742f66749b72"),
  team: 'Cavs',
  position: 'Guard',
  points: 33 }

{ _id: ObjectId("619527e467d6742f66749b6e"),
  team: 'Mavs',
  position: 'Guard',
  points: 31 }

{ _id: ObjectId("619527e467d6742f66749b6f"),
  team: 'Mavs',
  position: 'Guard',
  points: 22 }

โปรดทราบว่าเอกสารเดียวที่ส่งคืนคือเอกสารที่ช่อง “ทีม” ไม่เท่ากับ “Rockets”

ตัวอย่างที่ 2: ข้อความค้นหา “NON IN” พร้อมรายการค่า

สมมติว่าเรามี ทีมงาน เรียกเก็บเงินพร้อมเอกสารดังต่อไปนี้:

 db.teams.insertOne({team: " Mavs ", position: " Guard ", points: 31 })
db.teams.insertOne({team: " Spurs ", position: " Guard ", points: 22 })
db.teams.insertOne({team: " Rockets ", position: " Center ", points: 19 })
db.teams.insertOne({team: " Warriors ", position: " Forward ", points: 26 })
db.teams.insertOne({team: " Cavs ", position: " Guard ", points: 33 })

เราสามารถใช้โค้ดต่อไปนี้เพื่อค้นหาเอกสารทั้งหมดที่ช่อง “ทีม” ไม่เท่ากับค่า “Rockets” หรือ “Cavs”:

 db.teams.find({team: { $nin : [" Rockets ", " Cavs "]}}) 

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

 { _id: ObjectId("619527e467d6742f66749b6e"),
  team: 'Mavs',
  position: 'Guard',
  points: 31 }

{ _id: ObjectId("619527e467d6742f66749b6f"),
  team: 'Mavs',
  position: 'Guard',
  points: 22 }

โปรดทราบว่าเอกสารเดียวที่ส่งคืนคือเอกสารที่ช่อง “ทีม” ไม่เท่ากับ “Rockets” หรือ “Cavs”

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

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

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

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

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

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