MongoDB: ค้นหาเอกสารโดยไม่มีฟิลด์หรือไม่?


173

มีวิธีการระบุเงื่อนไขของ "ที่เอกสารไม่มีฟิลด์" หรือไม่?

ตัวอย่างเช่นฉันต้องการค้นหาเฉพาะรายการแรกของ 2 เหล่านี้เนื่องจากไม่มีฟิลด์ "ราคา"

{"fruit":"apple", "color":"red"}


{"fruit":"banana", "color":"yellow", "price":"2.00"}

สำเนาที่เป็นไปได้ของMongo: ค้นหารายการที่ไม่มีฟิลด์
Ram Patra

3
คุณสามารถลองdb.mycollection.find({ "price" : null })
evilReiko

คำตอบ:


329

ลองใช้ตัว$existsดำเนินการ:

db.mycollection.find({ "price" : { "$exists" : false } })

และดูเอกสาร


12
+1 อย่างไรก็ตามโปรดทราบว่าคำค้นหาดังกล่าวไม่สามารถใช้การจัดทำดัชนีและอาจช้ามากในคอลเลกชันขนาดใหญ่
mnemosyn

10
จุดที่ดี - ขอบคุณ ฉันรู้ว่าคำเตือนนี้ถือเป็นจริงใน MongoDB รุ่น 1.8.x และก่อนหน้านี้; แต่ฉันคิดว่าข้อความค้นหาที่มี $ ข้อ จำกัด ของเขตข้อมูลอยู่ในขณะนี้สามารถใช้ประโยชน์จากดัชนีในเวอร์ชัน 2.0 ... ได้หรือไม่
dampier
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.