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

Зміст:

Anonim

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

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

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

У цьому підручнику ви дізнаєтесь -

  • Розуміння впливу показників
  • Як створити індекси: createIndex ()
  • Як знайти індекси: getindexes ()
  • Як скинути індекси: dropindex ()

Розуміння впливу показників

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

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

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

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

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

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

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

Наступний приклад показує, як додати індекс до колекції. Припустимо, що у нас є та сама колекція Employee, яка має імена полів "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 вказують, що на цих 2 значеннях полів слід створити індекс, при цьому: 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 для скидання всіх індексів.