2014-12-30 121 views
0

我的問題是關於查詢多鍵文檔時MongoDB的運行方式。Mongodb - 查詢多鍵索引文檔

假設我有這些文件: { 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 AND b),MongoDB如何調用查詢?它是否「看到」我有c上的索引,還是試圖只查找cb的索引?

+1

在find()之後使用.explain()方法並查看nscannedObjects和nscanned。它可以幫助您檢查索引 – Disposer

+0

的使用情況。只是做了那個...和nscannedObjects是集合的大小。爲什麼它會通過整個集合來獲取索引字段的內容。 – refaelos

+1

我根據自己的文檔爲自己做了一個測試用例,並在2個文檔中搜索,我得到了nscanned = 1,意味着它使用索引。在.explain()中查看光標,如果它使用索引,則光標應該像「BtreeCursor c_1」 – Disposer

回答

0

由於處置者

查詢只找到的c指數即使語句包括cb