有一個樣品http://docs.mongodb.org/manual/tutorial/create-indexes-to-support-queries/#indexes-covered-queriesmongodb的索引覆蓋查詢
任何索引的字段都是在子文檔字段。要在子文檔中爲 索引,請使用點符號。例如,考慮一個集合 用戶提供下列形式的文檔:{_id:1,用戶:{登錄: 「測試」}}收集有以下指標:
{用戶:1}
{ 「user.login」:1}
【用戶:1}索引覆蓋以下查詢:
db.users.find({用戶:{登錄: 「測試器」}},{用戶:1,_id:0})
但是,{「u ser.login「:1}索引不包括以下內容 查詢:
db.users.find({」user.login「:」tester「},{」user.login「:1,_id:0 } )
但是,該查詢的確使用{「user.login」:1}索引來查找 匹配的文檔。
我想知道爲什麼{「user.login」:1}索引不包括查詢的根本原因。
謝謝
正如上面所解釋的:「*如果任何索引字段是子文檔中的字段,索引不能覆蓋查詢*」... – assylias 2013-05-13 12:55:45
您能否顯示您的解釋計劃? – 2013-05-13 12:57:11
我不知道根本原因,我必須誠實,但我相信對象評估工作和點符號不是因爲查詢運算符可以用點符號執行 – Sammaye 2013-05-13 13:02:17