,如果我有这些文档: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]}}。 –