Мой вопрос о том, как MongoDB работает при запросе документа MultiKey.Mongodb - Query MultiKey Индексированные документы
Предполагая, что у меня есть эти документы: { a: 1, b: 2, c: ['x','y','z'] }, { a:3, b: null, c: ['x','z'] }
Мой запрос состоит в следующем: db.<collection>.find({ b: null, c: 'x'})
И мой индекс является: db.<collection>.ensureIndex({ c: 1 })
Мой вопрос: Для запроса выше (что просит c
AND b
), как MongoDB вызывает запрос? Видит ли он, что у меня есть индекс на c
или он пытается найти индекс только для c
И b
?
Использование метода .explain() после поиска() и просмотра nscannedObjects и nscanned. это поможет вам проверить использование индекса – Disposer
Просто сделал это ... и nscannedObjects - это размер коллекции. Почему он проходит через всю коллекцию, чтобы получить что-то по индексированному полю. – refaelos
Я сделал тестовый пример для себя на основе ваших документов и для поиска в двух документах, я получил nscanned = 1, означает, что он использует индексирование. посмотрите на курсор в .explain(), и если он использует индекс, курсор должен быть чем-то вроде «BtreeCursor c_1» – Disposer