Задать вопрос

Не могу понять как работают индексы в MongoDB?

Изучаю индексацию в MongoDB, возникли следующие вопросы:
1) Если будут два противоречащих индекса, как монго определяет, по какому индексу делать выборку?
Например, пусть имеется коллекция с документами вида {'name': 'VasyaPupkin', 'age': 30}. Имеется два индекса {'name': 1, 'age': -1} и {'name': -1, 'age': -1}. Делаем выборку db.users.find({"name": "???"}). То какой индекс будет использован?

2) Важен ли порядок ключей в составном индексе?

3) Если ли связь между индексами и указанием сортировки (find(...).sort(...)) в запросе?
  • Вопрос задан
  • 1185 просмотров
Подписаться 5 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Skillbox
    Курс Java-разработчик
    4 месяца
    Далее
  • MongoDB University
    MongoDB Atlas Administrator Path
    1 неделя
    Далее
Решения вопроса 2
p00h
@p00h
Фехтовальщик-стропальщик
1) "Противоречащих" индексов не будет. Возможны, например, избыточные.
{'name': 1, 'age': -1}
и
{'name': -1, 'age': -1}
это два разных индекса.
О тонкостях работы оптимизатора запросов я не скажу, но монга, уверен, достаточно умна, чтобы использовать именно тот индекс, который нужен в настоящий момент. Вот здесь великолепно расписано как монга анализирует запросы.

2) Разумеется да. Если мы составляем индекс
name, age
то именно в таком порядке мы должны подавать элементы в запросе, в противном случае индекс будет бесполезен.

3) Если я правильно понял вопрос, индекс и нужен именно для поиска и сортировки.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы