我知道,使用MongoDB時,對於使用複合索引的查詢,它必須使用索引中的所有鍵或至少一些鍵從左邊開始。例如Mongo複合索引,在查詢中使用少於全部
db.products.find({ "a":"foo", "b":"bar" })
將愉快地使用索引的製成的{A,B,C}。
但是,如果我要查詢:
db.products.find({"a":"foo", "c":"thing" })
我認爲這不能使用索引。這可以通過在「b」上添加一個微不足道的條件來解決,例如
db.products.find({"a":"foo", "b":{ $ne : "" }, "c":"thing" })
即使我實際上並不關心b的價值。原因是我們目前有4500萬個對象,並且它將繼續增長,所以我們希望整合我們的索引以節省資源。
非常感謝。
你能解釋一下這些查詢嗎? –
你的理解在雙重複合指數中是嚴格正確的,但在三重複合指數中不一定是正確的。使用解釋你將會看到,當你在a,c上查詢時,實際上會使用a,b,c索引。 –