Indexy jsou v každé databázi velmi důležité a v MongoDB tomu není jinak. Díky použití indexů je provádění dotazů v MongoDB efektivnější.

Pokud byste měli kolekci s tisíci dokumenty bez indexů a pak byste se dotazovali na vyhledání určitých dokumentů, pak by v takovém případě musela MongoDB prohledat celou kolekci, aby dokumenty našla. Pokud byste však měli indexy, MongoDB by tyto indexy použila k omezení počtu dokumentů, které je třeba v kolekci prohledat.

Indexy jsou speciální datové sady, které uchovávají částečnou část dat kolekce. Protože se jedná o částečná data, je snazší tato data číst. Tato částečná množina uchovává hodnotu určitého pole nebo množinu polí seřazených podle hodnoty pole.

V tomto kurzu se naučíte –

  • Pochopení vlivu indexů
  • Jak vytvořit indexy: createIndex()
  • Jak najít indexy: getindexes()
  • Jak zrušit indexy:

Pochopení vlivu indexů

Nyní jsme sice z úvodu viděli, že indexy jsou pro dotazy dobré, ale příliš mnoho indexů může zpomalit další operace, jako jsou operace Insert, Delete a Update.

Pokud by se často prováděly operace vkládání, mazání a aktualizace dokumentů, pak by se indexy musely tak často měnit, což by byla jen režie pro kolekci.

Následující příklad ukazuje ukázku toho, jaké hodnoty polí by mohly tvořit index v kolekci. Index může být založen buď jen na jednom poli v kolekci, nebo může být založen na více polích v kolekci.

V níže uvedeném příkladu jsou pro indexování dokumentů v kolekci použita pole Employeeid „1“ a EmployeeCode „AA“. Při vyhledávání dotazu se tedy tyto indexy použijí k rychlému a efektivnímu nalezení požadovaných dokumentů v kolekci.

Takže i když je vyhledávací dotaz založen na EmployeeCode „AA“, bude tento dokument vrácen.

Jak vytvořit indexy: createIndex()

Vytvoření indexu v MongoDB se provádí pomocí metody „createIndex“.

Následující příklad ukazuje, jak přidat index do kolekce. Předpokládejme, že máme stejnou kolekci Employee, která má názvy polí „Employeeid“ a „EmployeeName“.

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

Vysvětlení kódu:

  1. Metoda createIndex slouží k vytvoření indexu na základě „Employeeid“ dokumentu.
  2. Parametr „1“ označuje, že při vytváření indexu s hodnotami pole „Employeeid“ by měly být seřazeny vzestupně. Vezměte prosím na vědomí, že se to liší od pole _id (Pole id slouží k jednoznačné identifikaci každého dokumentu v kolekci), které MongoDB vytváří v kolekci automaticky. Dokumenty budou nyní seřazeny podle pole Employeeid, a nikoli podle pole _id.

Pokud je příkaz úspěšně proveden, zobrazí se následující výstup:

Výstup:

  1. Příkaz numIndexesBefore: 1 udává počet hodnot polí (Aktuální pole v kolekci), které byly v indexech před provedením příkazu. Nezapomeňte, že každá kolekce má pole _id, které se také počítá jako hodnota pole do indexu. Protože pole _id indexu je součástí kolekce při jejím počátečním vytvoření, hodnota numIndexesBefore je 1.
  2. Podle numIndexesAfter: 2 udává počet hodnot pole, které se nacházely v indexech po spuštění příkazu.
  3. Zde je uvedeno „ok:

Výše uvedený kód ukazuje, jak vytvořit index na základě jedné hodnoty pole, ale lze také vytvořit index na základě více hodnot polí.

Následující příklad ukazuje, jak to lze provést;

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

Vysvětlení kódu:

  1. Metoda createIndex nyní bere v úvahu více hodnot polí, což nyní způsobí vytvoření indexu na základě „Employeeid“ a „EmployeeName“. Hodnoty Employeeid:1 a EmployeeName:1 naznačují, že index by měl být vytvořen na základě těchto 2 hodnot polí, přičemž :1 znamená, že by měl být ve vzestupném pořadí.

Jak najít indexy: getindexes()

Nalezení indexu v MongoDB se provádí pomocí metody „getIndexes“.

Následující příklad ukazuje, jak to lze provést;

db.Employee.getIndexes()

Vysvětlení kódu:

  1. Metoda getIndexes slouží k nalezení všech indexů v kolekci.

Pokud je příkaz úspěšně proveden, zobrazí se následující výstup:

Výstup:

  1. Výstup vrátí dokument, který právě ukazuje, že v kolekci jsou 2 indexy, z nichž jeden je pole _id a druhý pole ID zaměstnance. Označení :1 znamená, že hodnoty polí v indexu jsou vytvořeny ve vzestupném pořadí.

Jak zrušit indexy: dropindex()

Odstranění indexu v MongoDB se provádí pomocí metody dropIndex.

Následující příklad ukazuje, jak to lze provést;

db.Employee.dropIndex(Employeeid:1)

Vysvětlení kódu:

  1. Metoda dropIndex přebírá požadované hodnoty polí, které je třeba z indexu odstranit.

Pokud je příkaz úspěšně proveden, zobrazí se následující Výstup:

Výstup:

  1. Příkaz nIndexesWas: 3 udává počet hodnot polí, které byly v indexech před provedením příkazu. Nezapomeňte, že každá kolekce má pole _id, které se také počítá jako hodnota pole do indexu.
  2. Příkaz ok:

Chceme-li odstranit všechny indexy v kolekci najednou, můžeme použít příkaz dropIndexes.

Následující příklad ukazuje, jak to lze provést.

db.Employee.dropIndex()

Vysvětlení kódu:

  1. Metoda dropIndexes zruší všechny indexy kromě indexu _id.

Pokud je příkaz úspěšně proveden, zobrazí se následující výstup:

Výstup:

  1. Příkaz nIndexesWas: 2 udává počet hodnot polí, které byly v indexech před provedením příkazu.
  2. Znovu si uvědomte, že každá kolekce má pole _id, které se také počítá jako hodnota Field do indexu, a to nebude MongoDB odstraněno, a to je to, co tato zpráva indikuje.
  3. The ok:

Souhrn

  • Definování indexů je důležité pro rychlejší a efektivnější vyhledávání dokumentů v kolekci.
  • Indexy lze vytvořit pomocí metody createIndex. Indexy lze vytvořit pouze na jedno pole nebo na více hodnot polí.
  • Indexy lze vyhledat pomocí metody getIndexes.
  • Indexy lze odstranit pomocí dropIndex pro jednotlivé indexy nebo dropIndexes pro odstranění všech indexů.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.