, если у меня есть эти документы:индекс 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() и обнаружил, что этот запрос не может использовать индекс, и он сканирует все четыре документа.
Интересно, почему он сканирует все документы?
вы знаете, если я ENUM все "имя" «s значение (1 и 2):
db.test.find({"$or":["name":1, "name":2], "score":4})
он может использовать индекс, и только отсканированные две документы.
Почему mongodb не может это сделать для меня?
вы не должны использовать $ или когда оба положения имеют такое же поле. Вместо этого используйте {name: {$ in: [1, 2]}}. –