Руководство по индексированию MongoDB - пример createIndex (), dropindex ()

Содержание:

Anonim

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

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

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

В этом руководстве вы узнаете -

  • Понимание влияния индексов
  • Как создавать индексы: createIndex ()
  • Как найти индексы: getindexes ()
  • Как удалить индексы: dropindex ()

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

Теперь, хотя из введения мы увидели, что индексы хороши для запросов, слишком много индексов может замедлить другие операции, такие как операции Insert, Delete и Update.

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

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

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

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

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

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

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

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

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

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

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

Выход:

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

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

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

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

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

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

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

Поиск индекса в MongoDB выполняется с помощью метода getIndexes .

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

db.Employee.getIndexes()

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

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

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

Выход:

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

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

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

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

db.Employee.dropIndex(Employeeid:1)

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

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

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

Выход:

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

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

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

db.Employee.dropIndex()

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

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

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

Выход:

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

Резюме

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