Mongodb: วิธีตรวจสอบว่ามีฟิลด์อยู่หรือไม่


คุณสามารถใช้วิธีการต่อไปนี้เพื่อตรวจสอบว่ามีฟิลด์อยู่ในคอลเลกชันใน MongoDB หรือไม่:

วิธีที่ 1: ตรวจสอบว่ามีฟิลด์อยู่หรือไม่

 db.myCollection.find({ " myField ": { $exists : true } })

วิธีการนี้จะตรวจสอบว่ามี “myField” อยู่ในคอลเลกชันชื่อ myCollection หรือไม่ หากเป็นเช่นนั้น ระบบจะส่งคืนเอกสารทั้งหมดที่มีชื่อฟิลด์ หากไม่เป็นเช่นนั้นก็จะไม่ได้ผลตอบแทนใด ๆ

วิธีที่ 2: ตรวจสอบว่ามีฟิลด์ที่ฝังอยู่หรือไม่

 db.myCollection.find({ " myField.embeddedField ": { $exists : true } })

วิธีการนี้จะตรวจสอบว่าชื่อฟิลด์ “embeddedField” ในช่อง “myField” มีอยู่ในคอลเลกชันชื่อ myCollection หรือไม่ หากเป็นเช่นนั้น ระบบจะส่งคืนเอกสารทั้งหมดที่มีชื่อฟิลด์ หากไม่เป็นเช่นนั้นก็จะไม่ได้ผลตอบแทนใด ๆ

ตัวอย่างต่อไปนี้แสดงวิธีการใช้แต่ละวิธีในทางปฏิบัติกับ ทีม เรียกเก็บเงิน โดยมีเอกสารดังต่อไปนี้:

 db.teams.insertOne({team: "Mavs", class: {conf: "Western", div: "A"}, points: 31 })
db.teams.insertOne({team: "Spurs", class: {conf: "Western", div: "A"}, points: 22 })
db.teams.insertOne({team: "Jazz", class: {conf: "Western", div: "B"}, points: 19 })
db.teams.insertOne({team: "Celtics", class: {conf: "Eastern", div: "C"}, points: 26 })

ตัวอย่างที่ 1: ตรวจสอบว่ามีฟิลด์อยู่หรือไม่

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

 db.teams.find({ " points ": { $exists : true } })

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

 { _id: ObjectId("6203d10c1e95a9885e1e7637"),
  team: 'Mavs',
  class: { conf: 'Western', div: 'A' },
  points: 31 }
{ _id: ObjectId("6203d10c1e95a9885e1e7638"),
  team: 'Spurs',
  class: { conf: 'Western', div: 'A' },
  points: 22 }
{ _id: ObjectId("6203d10c1e95a9885e1e7639"),
  team: 'Jazz',
  class: { conf: 'Western', div: 'B' },
  points: 19 }
{ _id: ObjectId("6203d10c1e95a9885e1e763a"),
  team: 'Celtics',
  class: { conf: 'Eastern', div: 'C' },
  points: 26 }

เนื่องจากชื่อฟิลด์ “points” มีอยู่ แต่ละเอกสารที่มีฟิลด์ “points” จะถูกส่งคืน

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

 db.teams.find({ " steals ": { $exists : true } })

เนื่องจากไม่มีฟิลด์นี้ จึงไม่มีการส่งคืนเอาต์พุต

ตัวอย่างที่ 2: ตรวจสอบว่ามีฟิลด์แบบฝังอยู่หรือไม่

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

 db.teams.find({ " class.div ": { $exists : true } })

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

 { _id: ObjectId("6203d10c1e95a9885e1e7637"),
  team: 'Mavs',
  class: { conf: 'Western', div: 'A' },
  points: 31 }
{ _id: ObjectId("6203d10c1e95a9885e1e7638"),
  team: 'Spurs',
  class: { conf: 'Western', div: 'A' },
  points: 22 }
{ _id: ObjectId("6203d10c1e95a9885e1e7639"),
  team: 'Jazz',
  class: { conf: 'Western', div: 'B' },
  points: 19 }
{ _id: ObjectId("6203d10c1e95a9885e1e763a"),
  team: 'Celtics',
  class: { conf: 'Eastern', div: 'C' },
  points: 26 }

เนื่องจากชื่อของฟิลด์แบบฝัง “div” มีอยู่ในฟิลด์ “คลาส” เอกสารทุกฉบับที่มีฟิลด์แบบฝัง “div” จะถูกส่งคืน

สมมติว่าเราตรวจสอบแทนว่ามีชื่อฟิลด์ “division” ในตัวอยู่ในฟิลด์ “class” ในคอลเลกชัน ทีม หรือไม่:

 db.teams.find({ " class.division ": { $exists : true } })

เนื่องจากไม่มีฟิลด์ในตัวนี้ จึงไม่มีการส่งคืนเอาต์พุต

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

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

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

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

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

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