MongoDB Учебное пособие по индексированию — пример createIndex(), dropindex()

Индексы очень важны в любой базе данных, и с MongoDB это ничем не отличается. С использованием индексов выполнение запросов в MongoDB становится более эффективным.

Если у вас была коллекция с тысячами документов без индексов, а затем вы отправляете запрос на поиск определенных документов, то в таком случае MongoDB нужно будет отсканировать всю коллекцию, чтобы найти документы. Но если бы у вас были индексы, MongoDB будет использовать эти индексы, чтобы ограничить количество документов, которые нужно искать в коллекции.

Индексы — это специальные наборы данных, в которых хранится частичная часть данных коллекции. Поскольку данные являются частичными, их становится легче читать. Этот частичный набор хранит значение определенного поля или набора полей, упорядоченных по значению поля.

Понимание влияния индексов

Несмотря на то, что из введения мы увидели, что индексы хороши для запросов, слишком большое количество индексов может замедлить выполнение других операций, таких как операции вставки, удаления и обновления.

Если в документах часто выполняются операции вставки, удаления и обновления, индексы должны будут меняться так часто, что будет просто накладными расходами для коллекции.

В приведенном ниже примере показан пример того, какие значения полей могут составлять индекс в коллекции. Индекс может основываться либо на одном поле коллекции, либо на нескольких полях коллекции.

В приведенном ниже примере идентификатор сотрудника «1» и код сотрудника «AA» используются для индексации документов в коллекции. Таким образом, при поиске по запросу эти индексы будут использоваться для быстрого и эффективного поиска необходимых документов в коллекции.

Таким образом, даже если поисковый запрос основан на коде сотрудника «AA», этот документ будет возвращен.

Понимание влияния индексов

Как создавать индексы: createIndex()

Создание индекса в MongoDB делается с помощью «создатьиндексМетод.

В следующем примере показано, как добавить индекс в коллекцию. Предположим, что у нас есть та же самая коллекция сотрудников, в которой есть имена полей «Employeeid» и «EmployeeName».

Создание индексов: createIndex()

db.Employee.createIndex({Employeeid:1})

Пояснение к коду:

  1. The создатьиндекс Метод используется для создания индекса на основе «Employeeid» документа.
  2. Параметр «1» указывает, что при создании индекса со значениями поля «Сотрудник» они должны быть отсортированы в порядке возрастания. Обратите внимание, что оно отличается от поля _id (поле id используется для уникальной идентификации каждого документа в коллекции), которое автоматически создается в коллекции с помощью MongoDB. Документы теперь будут отсортированы по идентификатору сотрудника, а не по полю _id.

Если команда выполнена успешно, будет показан следующий вывод:

Вывод:

Создание индексов: createIndex()

  1. numIndexesBefore: 1 указывает количество значений полей (фактических полей в коллекции), которые были в индексах до запуска команды. Помните, что каждая коллекция имеет поле _id, которое также считается значением поля в индексе. Поскольку поле индекса _id является частью коллекции при ее первоначальном создании, значение numIndexesBefore равно 1.
  2. numIndexesAfter: 2 указывает количество значений полей, которые были в индексах после запуска команды.
  3. Здесь вывод «ok: 1» указывает, что операция прошла успешно, и в коллекцию добавлен новый индекс.

Приведенный выше код показывает, как создать индекс на основе одного значения поля, но можно также создать индекс на основе нескольких значений полей.

Следующий пример показывает, как это можно сделать;

Создание индексов: createIndex()

db.Employee.createIndex({Employeeid:1, EmployeeName:1])

Пояснение к коду:

  • Метод createIndex теперь учитывает несколько значений поля, что теперь приведет к созданию индекса на основе «Employeeid» и «EmployeeName». Идентификатор Сотрудника:1 и ИмяСотрудника:1 указывают, что индекс должен быть создан для этих двух значений полей, причем :2 указывает, что он должен быть в порядке возрастания.

Как найти индексы: getindexes()

Находим индекс в MongoDB делается с помощью «получить индексы» метод.

Следующий пример показывает, как это можно сделать;

Найти индексы: getindexes()

db.Employee.getIndexes()

Пояснение к коду:

  • Метод getIndexes используется для поиска всех индексов в коллекции.

Если команда выполнена успешно, будет показан следующий вывод:

Вывод:

Найти индексы: getindexes()

  • В результате возвращается документ, который просто показывает, что в коллекции есть два индекса: поле _id, а другой — поле идентификатора сотрудника. :2 указывает, что значения полей в индексе создаются в порядке возрастания.

Как удалить индексы: dropindex()

Удаление индекса в MongoDB делается с помощью метода dropIndex.

Следующий пример показывает, как это можно сделать;

Удаление индексов: dropindex()

db.Employee.dropIndex(Employeeid:1)

Пояснение к коду:

  • Метод dropIndex принимает необходимые значения полей, которые необходимо удалить из индекса.

Если команда выполнена успешно, будет показан следующий вывод:

Вывод:

Удаление индексов: dropindex()

  1. nIndexesWas: 3 указывает количество значений полей, которые были в индексах до запуска команды. Помните, что каждая коллекция имеет поле _id, которое также считается значением поля в индексе.
  2. Вывод ok:1 указывает, что операция прошла успешно, а поле «Employeeid» удалено из индекса.

Чтобы удалить все индексы из коллекции одновременно, можно использовать команду dropIndexes.

Следующий пример показывает, как это можно сделать.

Удаление индексов: dropindex()

db.Employee.dropIndex()

Пояснение к коду:

  • Метод dropIndexes удалит все индексы, кроме индекса _id.

Если команда выполнена успешно, будет показан следующий вывод:

Вывод:

Удаление индексов: dropindex()

  1. nIndexesWas: 2 указывает количество значений полей, которые были в индексах до запуска команды.
  2. Еще раз помните, что каждая коллекция имеет поле _id, которое также считается значением поля в индексе и не будет удалено MongoDB и это то, что указывает это сообщение.
  3. Выходные данные ok: 1 указывают, что операция прошла успешно.

Резюме

  • Определение индексов важно для более быстрого и эффективного поиска документов в коллекции.
  • Индексы можно создавать с помощью метода createIndex. Индексы могут быть созданы только для одного поля или для нескольких значений полей.
  • Индексы можно найти с помощью метода getIndexes.
  • Индексы можно удалить, используя dropIndex для отдельных индексов или dropIndexes для удаления всех индексов.