Mongodb - Kueri Dokumen Terindeks MultiKey

Pertanyaan saya adalah tentang cara MongoDB beroperasi saat menanyakan dokumen MultiKey.

Dengan asumsi saya memiliki dokumen-dokumen ini: { a: 1, b: 2, c: ['x','y','z'] }, { a:3, b: null, c: ['x','z'] }

Pertanyaan saya adalah ini: db.<collection>.find({ b: null, c: 'x'})

Dan indeks saya adalah: db.<collection>.ensureIndex({ c: 1 })

Pertanyaan saya adalah: Untuk kueri di atas (yang meminta c DAN b), bagaimana MongoDB memanggil kueri tersebut? Apakah ia 'melihat' bahwa saya memiliki indeks pada c atau ia mencoba hanya mencari indeks untuk c DAN b ?


person refaelos    schedule 30.12.2014    source sumber
comment
gunakan metode .explain() setelah find() dan lihat nscannedObjects dan nscanned. ini membantu Anda memeriksa penggunaan index   -  person Disposer    schedule 30.12.2014
comment
Lakukan saja... dan nscannedObjects adalah ukuran koleksinya. Mengapa ia menelusuri seluruh koleksi hanya untuk mendapatkan sesuatu berdasarkan bidang yang diindeks.   -  person refaelos    schedule 30.12.2014
comment
Saya membuat test case untuk diri saya sendiri berdasarkan dokumen Anda dan untuk pencarian di 2 dokumen, saya mendapat nscanned = 1, artinya menggunakan pengindeksan. lihat kursor di .explain() dan jika menggunakan indeks, kursornya akan seperti BtreeCursor c_1   -  person Disposer    schedule 30.12.2014
comment
Dingin. Ini berfungsi sekarang. Mungkin perlu waktu untuk mengindeks koleksi besar.   -  person refaelos    schedule 30.12.2014


Jawaban (1)


Terima kasih Disposer

Kueri hanya menemukan indeks c meskipun pernyataan tersebut menyertakan c dan b.

person refaelos    schedule 30.12.2014