Indexy sú veľmi dôležité v každej databáze a s MongoDB to nie je inak. S používaním indexov sa vykonávanie dotazov v MongoDB stáva efektívnejším.
Ak ste mali zbierku s tisíckami dokumentov bez indexov a potom hľadáte určité dokumenty, potom by v takom prípade MongoDB musel vyhľadať dokumenty, aby naskenoval celú zbierku. Ak by ste ale mali indexy, MongoDB by pomocou týchto indexov obmedzil počet dokumentov, ktoré bolo treba prehľadať v zbierke.
Indexy sú špeciálne súbory údajov, ktoré uchovávajú čiastočnú časť údajov zbierky. Pretože údaje sú čiastočné, je ľahšie ich prečítať. Táto čiastočná množina uchováva hodnotu konkrétneho poľa alebo množiny polí zoradených podľa hodnoty poľa.
V tomto výučbe sa dozviete -
- Pochopenie vplyvu indexov
- Ako vytvárať indexy: createIndex ()
- Ako nájsť indexy: getindexes ()
- Ako vypúšťať indexy: dropindex ()
Pochopenie vplyvu indexov
Aj keď sme od úvodu videli, že indexy sú dobré pre dotazy, príliš veľa indexov však môže spomaliť ďalšie operácie, ako sú operácie Vložiť, Odstrániť a Aktualizovať.
Ak sa na dokumentoch často vykonávajú operácie vkladania, mazania a aktualizácie, potom by bolo treba indexy často meniť, čo by predstavovalo iba réžiu pre zber.
Nasledujúci príklad ukazuje príklad toho, aké hodnoty polí môžu tvoriť index v kolekcii. Index môže byť založený na iba jednom poli v kolekcii, alebo môže byť založený na viacerých poliach v kolekcii.
V nasledujúcom príklade sa na indexovanie dokumentov v zbierke používajú kódy Employeeid „1“ a EmployeeCode „AA“. Keď sa teda uskutoční vyhľadávanie dotazov, tieto indexy sa použijú na rýchle a efektívne vyhľadanie požadovaných dokumentov v zbierke.
Takže aj keď je vyhľadávací dopyt založený na EmployeeCode „AA“, tento dokument by sa vrátil.
Ako vytvárať indexy: createIndex ()
Vytvorenie indexu v MongoDB sa vykonáva pomocou metódy „ createIndex “.
Nasledujúci príklad ukazuje, ako pridať index do kolekcie. Predpokladajme, že máme rovnakú kolekciu zamestnancov, ktorá má názvy polí „Employeeid“ a „EmployeeName“.
db.Employee.createIndex({Employeeid:1})
Vysvetlenie kódu:
- Metóda createIndex sa používa na vytvorenie indexu na základe „Employeeid“ dokumentu.
- Parameter „1“ označuje, že keď sa index vytvorí s hodnotami poľa „Employeeid“, mali by sa zoradiť vzostupne. Upozorňujeme, že toto sa líši od poľa _id (pole ID sa používa na jednoznačnú identifikáciu každého dokumentu v zbierke), ktoré sa v zbierke vytvára automaticky pomocou MongoDB. Dokumenty sa teraz zoradia podľa poľa Employeeid, nie podľa poľa _id.
Ak je príkaz vykonaný úspešne, zobrazí sa nasledujúci výstup:
Výkon:
- NumIndexesBefore: 1 označuje počet hodnôt poľa (skutočné polia v kolekcii), ktoré boli v indexoch pred spustením príkazu. Pamätajte, že každá kolekcia má pole _id, ktoré sa tiež počíta ako hodnota poľa do indexu. Pretože pole indexu _id je súčasťou kolekcie, keď je pôvodne vytvorené, hodnota numIndexesBefore je 1.
- NumIndexesAfter: 2 označuje počet hodnôt poľa, ktoré sa v indexoch nachádzali po spustení príkazu.
- Tu výstup „ok: 1“ určuje, že operácia bola úspešná, a do kolekcie sa pridá nový index.
Vyššie uvedený kód ukazuje, ako vytvoriť index na základe jednej hodnoty poľa, ale je možné vytvoriť index aj na základe viacerých hodnôt poľa.
Nasledujúci príklad ukazuje, ako to možno urobiť;
db.Employee.createIndex({Employeeid:1, EmployeeName:1])
Vysvetlenie kódu:
- Metóda createIndex teraz zohľadňuje viac hodnôt poľa, čo teraz spôsobí vytvorenie indexu na základe "Employeeid" a "EmployeeName". Employeeid: 1 a EmployeeName: 1 naznačuje, že index by sa mal vytvoriť na týchto 2 hodnotách poľa s: 1, čo naznačuje, že by mal byť vzostupne.
Ako nájsť indexy: getindexes ()
Vyhľadanie indexu v MongoDB sa vykonáva pomocou metódy „getIndexes“ .
Nasledujúci príklad ukazuje, ako to možno urobiť;
db.Employee.getIndexes()
Vysvetlenie kódu:
- Metóda getIndexes sa používa na vyhľadanie všetkých indexov v kolekcii.
Ak je príkaz vykonaný úspešne, zobrazí sa nasledujúci výstup:
Výkon:
- Výstup vráti dokument, ktorý iba ukazuje, že v kolekcii sú 2 indexy, čo je pole _id a druhým je pole ID zamestnanca. Znak: 1 označuje, že hodnoty polí v indexe sa vytvárajú vzostupne.
Ako vypúšťať indexy: dropindex ()
Odstránenie indexu v MongoDB sa vykonáva pomocou metódy dropIndex.
Nasledujúci príklad ukazuje, ako to možno urobiť;
db.Employee.dropIndex(Employeeid:1)
Vysvetlenie kódu:
- Metóda dropIndex preberá požadované hodnoty poľa, ktoré je potrebné z indexu odstrániť.
Ak je príkaz vykonaný úspešne, zobrazí sa nasledujúci výstup:
Výkon:
- NIndexesWas: 3 označuje počet hodnôt poľa, ktoré boli v indexoch pred spustením príkazu. Pamätajte, že každá kolekcia má pole _id, ktoré sa tiež počíta ako hodnota poľa do indexu.
- Výstup ok: 1 určuje, že operácia bola úspešná, a pole „Employeeid“ je odstránené z indexu.
Ak chcete odstrániť všetky indexy z kolekcie naraz, môžete použiť príkaz dropIndexes.
Nasledujúci príklad ukazuje, ako sa to dá urobiť.
db.Employee.dropIndex()
Vysvetlenie kódu:
- Metóda dropIndexes zruší všetky indexy okrem indexu _id.
Ak je príkaz vykonaný úspešne, zobrazí sa nasledujúci výstup:
Výkon:
- NIndexesWas: 2 označuje počet hodnôt poľa, ktoré boli v indexoch pred spustením príkazu.
- Pamätajte znova, že každá kolekcia má pole _id, ktoré sa tiež počíta ako hodnota poľa do indexu a ktoré neodstráni MongoDB, a to naznačuje táto správa.
- Výstup ok: 1 určuje, že operácia bola úspešná.
Zhrnutie
- Definovanie indexov je dôležité pre rýchlejšie a efektívnejšie vyhľadávanie dokumentov v zbierke.
- Indexy je možné vytvárať pomocou metódy createIndex. Indexy je možné vytvárať iba na jednom poli alebo na viacerých hodnotách poľa.
- Indexy možno nájsť pomocou metódy getIndexes.
- Indexy je možné odstrániť pomocou dropIndex pre jednotlivé indexy alebo dropIndexes pre zrušenie všetkých indexov.