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: วิธีลบฟิลด์ออกจากแต่ละเอกสาร