,如果我有這些文檔:MongoDB的索引範圍發現
{"name": 1, "score": 2}
{"name": 1, "score": 4}
{"name": 2, "score": 2}
{"name": 2, "score": 4}
如果我保證指數:
db.test.ensureIndex({"name":1, "score":1})
然後我試圖找到():
db.test.find({"score": 4})
我用explain(),並發現這個查詢不能使用索引,它會掃描所有的四個文檔。
我不知道爲什麼它會掃描所有的文檔?
你知道,如果我枚舉所有的「名」的值(1和2):
db.test.find({"$or":["name":1, "name":2], "score":4})
它可以使用索引,只掃描的兩個文檔。
爲什麼mongodb無法爲我做這件事?
你不應該使用$或當兩個子句有相同的字段。改用{name:{$ in:[1,2]}}。 –