Mongodb - ค้นหาเอกสารที่จัดทำดัชนี MultiKey

คำถามของฉันเกี่ยวกับวิธีการทำงานของ MongoDB เมื่อทำการสืบค้นเอกสาร MultiKey

สมมติว่าฉันมีเอกสารเหล่านี้: { a: 1, b: 2, c: ['x','y','z'] }, { a:3, b: null, c: ['x','z'] }

คำถามของฉันคือ: db.<collection>.find({ b: null, c: 'x'})

และดัชนีของฉันคือ: db.<collection>.ensureIndex({ c: 1 })

คำถามของฉันคือ: สำหรับข้อความค้นหาด้านบน (ที่ถามถึง c และ b) MongoDB เรียกใช้ข้อความค้นหาอย่างไร 'เห็น' ว่าฉันมีดัชนีอยู่ที่ c หรือพยายามค้นหาเฉพาะดัชนีสำหรับทั้ง c AND b หรือไม่


person refaelos    schedule 30.12.2014    source แหล่งที่มา
comment
ใช้เมธอด .explain() หลังจาก find() และดูที่ nscannedObjects และ nscanned ช่วยให้คุณตรวจสอบการใช้ดัชนี   -  person Disposer    schedule 30.12.2014
comment
แค่ทำอย่างนั้น... และ nscannedObjects คือขนาดของคอลเลกชัน เหตุใดจึงต้องผ่านคอลเลกชันทั้งหมดเพียงเพื่อให้ได้บางสิ่งบางอย่างจากฟิลด์ที่จัดทำดัชนี   -  person refaelos    schedule 30.12.2014
comment
ฉันสร้างกรณีทดสอบสำหรับตัวเองตามเอกสารของคุณและสำหรับการค้นหาใน 2 เอกสาร ฉันได้รับ nscanned = 1 หมายความว่าใช้การจัดทำดัชนี ดูที่เคอร์เซอร์ใน .explain() และหากใช้ดัชนี เคอร์เซอร์ควรมีลักษณะคล้าย BtreeCursor c_1   -  person Disposer    schedule 30.12.2014
comment
เย็น. มันใช้งานได้แล้ว อาจต้องใช้เวลาในการจัดทำดัชนีคอลเลกชันขนาดใหญ่   -  person refaelos    schedule 30.12.2014


คำตอบ (1)


ขอบคุณ Disposer.

แบบสอบถามจะค้นหาดัชนีของ c แม้ว่าคำสั่งจะรวม c และ b ก็ตาม

person refaelos    schedule 30.12.2014