MongoDB Индексирование: createIndex() и dropIndex()
⚡ Умное резюме
MongoDB Индексы хранят упорядоченное подмножество полей коллекции, позволяя запросам находить документы без сканирования каждой записи. Методы createIndex, getIndexes и dropIndex создают, перечисляют и удаляют эти критически важные для производительности структуры.

Каковы MongoDB Индексы?
Индексы очень важны в любой базе данных, и с MongoDB Это ничем не отличается. Использование индексов позволяет выполнять запросы в MongoDB становится более эффективным.
Если у вас есть коллекция из тысяч документов без индексов, и вы затем выполняете запрос для поиска определенных документов, то в таком случае MongoDB нужно будет отсканировать всю коллекцию, чтобы найти документы. Но если бы у вас были индексы, MongoDB будет использовать эти индексы, чтобы ограничить количество документов, которые нужно искать в коллекции.
Индексы — это специальные наборы данных, которые хранят часть данных коллекции. Поскольку данные являются частичными, их легче читать. Этот частичный набор хранит значение определенного поля или набора полей, упорядоченных по значению поля.
Понимание влияния индексов
Несмотря на то, что во введении было показано, что индексы полезны для выполнения запросов, слишком большое количество индексов может замедлить другие операции, такие как вставка, удаление и обновление данных.
Если часто выполняются операции вставки, удаления и обновления документов, то индексы должны будут так же часто меняться, что создаст дополнительную нагрузку на сборщик данных.
Приведенный ниже пример показывает, какие значения полей могут составлять индекс в коллекции. Индекс может основываться либо только на одном поле в коллекции, либо на нескольких полях в коллекции.
В приведенном ниже примере идентификатор сотрудника «1» и сотрудникCode Индексы «AA» используются для индексирования документов в коллекции. Таким образом, при выполнении поискового запроса эти индексы будут использоваться для быстрого и эффективного поиска необходимых документов в коллекции.
Таким образом, даже если поисковый запрос основан на данных сотрудника.Code «AA», этот документ будет возвращен.
Как создавать индексы: createIndex()
Создание индекса в MongoDB делается с помощью создатьиндекс метод.
Следующий пример показывает, как добавить индекс к коллекции. Предположим, у нас есть та же коллекция Employee, содержащая поля с именами «Employeeid» и «EmployeeName».
db.Employee.createIndex({Employeeid:1})
Code Объяснение:
- создатьиндекс Метод используется для создания индекса на основе «Employeeid» документа.
- Параметр «1» указывает, что при создании индекса со значениями поля «Employeeid» они должны быть отсортированы в порядке возрастания. Обратите внимание, что это отличается от поля _id (которое однозначно идентифицирует каждый документ), которое MongoDB Создается автоматически. Теперь документы будут сортироваться по идентификатору сотрудника (Employeeid), а не по полю _id.
Если команда будет выполнена успешно, будет показан следующий результат:
Выход:
- Значение numIndexesBefore: 1 указывает количество значений полей в индексах до выполнения команды. Каждая коллекция имеет поле _id, которое также считается значением поля, поэтому numIndexesBefore равно 1.
- Параметр numIndexesAfter: 2 указывает количество значений полей в индексах после выполнения команды.
- Вывод «ok: 1» указывает на успешное выполнение операции и добавление нового индекса в коллекцию.
Приведённый выше код показывает, как создать индекс на основе одного значения поля, но можно также создать индекс на основе нескольких значений полей. Следующий пример демонстрирует, как это можно сделать:
db.Employee.createIndex({Employeeid:1, EmployeeName:1})
Метод createIndex теперь учитывает несколько значений полей, что приведет к созданию индекса на основе полей «Employeeid» и «EmployeeName». Значения Employeeid:1 и EmployeeName:1 указывают на то, что индекс должен быть создан на основе этих двух значений полей, при этом :1 обозначает возрастающий порядок. Это называется составным индексом.
Как найти индексы: getIndexes()
Поиск указателя в MongoDB делается с помощью getIndexes метод. Следующий пример показывает, как это можно сделать:
db.Employee.getIndexes()
Метод getIndexes используется для поиска всех индексов в коллекции.
Если команда будет выполнена успешно, будет показан следующий результат:
Выход:
В результате выполнения программы отображается документ, в котором показано наличие двух индексов в коллекции: поля _id и поля Employeeid. :1 указывает на то, что значения полей в индексе создаются в порядке возрастания.
Как удалить индексы: dropIndex()
Удаление индекса в MongoDB делается с помощью dropIndex метод. Следующий пример показывает, как это можно сделать:
db.Employee.dropIndex({Employeeid:1})
Метод dropIndex принимает необходимые значения полей, которые нужно удалить из индекса.
Если команда будет выполнена успешно, будет показан следующий результат:
Выход:
- Значение nIndexesWas: 3 указывает количество значений полей в индексах до выполнения команды. Каждая коллекция содержит поле _id, которое также считается значением поля.
- Вывод ok:1 указывает, что операция прошла успешно, а поле «Employeeid» удалено из индекса.
Чтобы удалить все индексы из коллекции сразу, можно использовать команду dropIndexes. Следующий пример показывает, как это можно сделать:
db.Employee.dropIndexes()
Метод dropIndexes удалит все индексы, кроме индекса _id.
Если команда будет выполнена успешно, будет показан следующий результат:
Выход:
- Значение nIndexesWas: 2 указывает количество значений полей в индексах до выполнения команды.
- Каждая коллекция имеет поле _id, которое также считается значением поля и не будет удалено. MongoDBИменно это и указывает данное сообщение.
- Выходные данные ok: 1 указывают, что операция прошла успешно.










