MongoDB Підручник з індексування – Приклад createIndex(), dropindex().

Індекси дуже важливі в будь-якій базі даних, а також MongoDB це нічим не відрізняється. З використанням індексів, виконання запитів в MongoDB стає більш ефективним.

Якщо у вас є колекція з тисячами документів без індексів, а потім ви запитуєте, щоб знайти певні документи, то в такому випадку MongoDB потрібно просканувати всю колекцію, щоб знайти документи. Але якщо у вас були індекси, MongoDB використовуватимуть ці покажчики, щоб обмежити кількість документів, які необхідно шукати в колекції.

Індекси — це спеціальні набори даних, які зберігають часткову частину даних колекції. Оскільки дані часткові, читати їх стає легше. Цей частковий набір зберігає значення певного поля або набору полів, упорядкованих за значенням поля.

Розуміння впливу індексів

Незважаючи на те, що зі вступу ми побачили, що індекси корисні для запитів, наявність занадто великої кількості індексів може уповільнити інші операції, такі як операції вставки, видалення та оновлення.

Якщо над документами часто виконуються операції вставки, видалення та оновлення, то індекси потрібно буде так часто змінювати, що лише призведе до додаткових витрат для колекції.

У наведеному нижче прикладі показано, які значення полів можуть становити індекс у колекції. Індекс може ґрунтуватися лише на одному полі в колекції або на кількох полях у колекції.

У наведеному нижче прикладі Employeeid «1» і EmployeeCode «AA» використовуються для індексування документів у колекції. Отже, коли виконується пошук за запитом, ці індекси використовуватимуться для швидкого й ефективного пошуку необхідних документів у колекції.

Отже, навіть якщо пошуковий запит базується на EmployeeCode «AA», цей документ буде повернено.

Розуміння впливу індексів

Як створити індекси: createIndex()

Створення індексу в MongoDB виконується за допомогою «createIndex”Метод.

У наступному прикладі показано, як додати індекс до колекції. Припустімо, що ми маємо ту саму колекцію Employee, яка має імена полів Employeeid та EmployeeName.

Створення індексів: createIndex()

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

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

  1. Команда createIndex Метод використовується для створення індексу на основі «Employeeid» документа.
  2. Параметр «1» вказує на те, що коли індекс створюється зі значеннями поля «Employeeid», їх слід відсортувати в порядку зростання. Зауважте, що воно відрізняється від поля _id (поле id використовується для унікальної ідентифікації кожного документа в колекції), яке автоматично створюється в колекції MongoDB. Тепер документи сортуватимуться за полем Employeeid, а не за полем _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». Employeeid:1 і EmployeeName:1 вказує на те, що індекс має бути створений на основі цих 2 значень полів із :1, що вказує, що він має бути в порядку зростання.

Як знайти індекси: getindexes()

Пошук індексу в MongoDB здійснюється за допомогою "getIndexes" метод.

Наступний приклад показує, як це можна зробити;

Пошук індексів: getindexes()

db.Employee.getIndexes()

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

  • Метод getIndexes використовується для пошуку всіх індексів у колекції.

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

вихід:

Пошук індексів: getindexes()

  • Вихід повертає документ, який лише показує, що в колекції є 2 індекси, які є полем _id, а інший є полем Employee id. :1 вказує на те, що значення поля в індексі створюються в порядку зростання.

Як видалити індекси: dropindex()

Видалення індексу в MongoDB виконується за допомогою методу dropIndex.

Наступний приклад показує, як це можна зробити;

Відкинути індекси: dropindex()

db.Employee.dropIndex(Employeeid:1)

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

  • Метод dropIndex приймає необхідні значення Field, які потрібно видалити з Index.

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

вихід:

Відкинути індекси: 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 для видалення всіх індексів.