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

Які MongoDB Індекси?
Індекси дуже важливі в будь-якій базі даних, а також MongoDB нічим не відрізняється. За допомогою індексів виконання запитів у MongoDB стає більш ефективним.
Якщо у вас є колекція з тисячами документів без індексів, а потім ви здійснюєте запит, щоб знайти певні документи, то в такому випадку MongoDB потрібно просканувати всю колекцію, щоб знайти документи. Але якщо у вас були індекси, MongoDB використовуватимуть ці покажчики, щоб обмежити кількість документів, які необхідно шукати в колекції.
Індекси – це спеціальні набори даних, які зберігають частину даних колекції. Оскільки дані є частковими, їх легше читати. Цей частковий набір зберігає значення певного поля або набору полів, упорядкованих за значенням поля.
Розуміння впливу індексів
Хоча у вступі було показано, що індекси корисні для запитів, надмірна кількість індексів може уповільнити інші операції, такі як операції вставки, видалення та оновлення.
Якщо над документами часто виконуються операції вставки, видалення та оновлення, то індекси повинні змінюватися так часто, що лише призведе до додаткових витрат на колекцію.
У наведеному нижче прикладі показано, які значення полів можуть складати індекс у колекції. Індекс може базуватися або лише на одному полі в колекції, або на кількох полях у колекції.
У наведеному нижче прикладі Employeeid «1» та EmployeeCode «AA» використовуються для індексації документів у колекції. Тож, коли виконується пошук за запитом, ці індекси будуть використані для швидкого та ефективного пошуку потрібних документів у колекції.
Тож навіть якщо пошуковий запит базується на співробітникуCode «АА», цей документ буде повернуто.
Як створити індекси: createIndex()
Створення індексу в MongoDB здійснюється за допомогою createIndex метод.
У наступному прикладі показано, як додати індекс до колекції. Припустимо, що у нас є та сама колекція Employee, яка має імена полів «Employeeid» та «EmployeeName».
db.Employee.createIndex({Employeeid:1})
Code Пояснення:
- Команда createIndex Метод використовується для створення індексу на основі «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 вказує на те, що операція була успішною.










