Mongodb: จะสืบค้น“ ไม่เป็นโมฆะ” ได้อย่างไร? ในพื้นที่เฉพาะ


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

 db.collection.find({" field_name ":{ $ne : null }}) 

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

ตัวอย่างที่ 1: ข้อความค้นหา “ไม่เป็นโมฆะ” ในช่องเฉพาะ

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

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

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

 db.teams.find({" position ":{ $ne : null }})

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

 { _id: ObjectId("618bf18f35d8a762d3c28717"),
  team: 'Spurs',
  position: 'Guard',
  points: 22 }

{ _id: ObjectId("618bf18f35d8a762d3c28719"),
  team: 'Warriors',
  position: 'Forward',
  points: 26 }

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

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

ตัวอย่างที่ 2: แบบสอบถามสำหรับ “ไม่เป็นโมฆะ” (เมื่อเอกสารทั้งหมดไม่มีฟิลด์)

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

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

โปรดทราบว่าเอกสารที่สองในคอลเลกชันไม่มีช่อง “ตำแหน่ง” ด้วยซ้ำ

เราสามารถใช้โค้ดต่อไปนี้เพื่อค้นหาเอกสารทั้งหมดที่ช่อง “ตำแหน่ง” ไม่เป็นศูนย์:

 db.teams.find({" position ":{ $ne : null }})

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

 { _id: ObjectId("618bf18f35d8a762d3c28719"),
  team: 'Warriors',
  position: 'Forward',
  points: 26 }

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

เนื่องจากเอกสารที่สองไม่มีช่อง “ตำแหน่ง” จึงไม่ถูกส่งคืน

โปรดทราบว่าเอกสารอีกสองฉบับที่มีค่า ว่าง ในช่อง “ตำแหน่ง” จะไม่ถูกส่งกลับเช่นกัน

สรุป : การใช้ไวยากรณ์ $ne:null เราจะส่งคืนเฉพาะเอกสารที่มีฟิลด์เฉพาะ และ ไม่เป็นค่าว่าง

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

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

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

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

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