Indeksi so v vsaki bazi podatkov zelo pomembni, z MongoDB pa ni nič drugače. Z uporabo indeksov je izvajanje poizvedb v MongoDB bolj učinkovito.
Če bi imeli zbirko s tisoči dokumentov brez indeksov in nato poizvedovali, da bi našli določene dokumente, bi v takem primeru MongoDB moral skenirati celotno zbirko, da bi našel dokumente. Če pa bi imeli indekse, bi MongoDB s temi indeksi omejil število dokumentov, ki jih je bilo treba iskati v zbirki.
Kazala so posebni nabori podatkov, ki shranjujejo delni del podatkov zbirke. Ker so podatki delni, jih je lažje brati. Ta delni niz shranjuje vrednost določenega polja ali nabor polj, razvrščenih po vrednosti polja.
V tej vadnici boste izvedeli -
- Razumevanje vpliva indeksov
- Kako ustvariti indekse: createIndex ()
- Kako najti indekse: getindexes ()
- Kako spustiti indekse: dropindex ()
Razumevanje vpliva indeksov
Zdaj, čeprav smo že v uvodu videli, da so indeksi primerni za poizvedbe, vendar lahko preveč indeksov upočasni druge operacije, kot so vstavljanje, brisanje in posodabljanje.
Če se na dokumentih pogosto izvajajo postopki vstavljanja, brisanja in posodabljanja, bi morali indekse to pogosto spreminjati, kar bi predstavljalo zgolj režijske stroške za zbirko.
Spodnji primer prikazuje primer, katere vrednosti polj bi lahko predstavljale indeks v zbirki. Indeks lahko temelji samo na enem polju v zbirki ali pa na več poljih v zbirki.
V spodnjem primeru se za indeksiranje dokumentov v zbirki uporabljata Employeeid "1" in EmployeeCode "AA". Torej, ko se izvede poizvedba, bodo ti indeksi uporabljeni za hitro in učinkovito iskanje zahtevanih dokumentov v zbirki.
Torej, tudi če iskalna poizvedba temelji na kodi EmployeeCode "AA", bi bil ta dokument vrnjen.
Kako ustvariti indekse: createIndex ()
Ustvarjanje indeksa v MongoDB se izvede z uporabo metode " createIndex ".
Naslednji primer prikazuje, kako dodati indeks v zbirko. Predpostavimo, da imamo isto zbirko zaposlenih, ki ima imeni polji "Employeeid" in "EmployeeName".
db.Employee.createIndex({Employeeid:1})
Razlaga kode:
- Metoda createIndex se uporablja za ustvarjanje indeksa na podlagi "Employeeid" dokumenta.
- Parameter '1' označuje, da jih je treba pri ustvarjanju indeksa z vrednostmi polja "Employeeid" razvrstiti po naraščajočem vrstnem redu. Upoštevajte, da se to razlikuje od polja _id (polje id se uporablja za enolično identifikacijo vsakega dokumenta v zbirki), ki ga v zbirki samodejno ustvari MongoDB. Dokumenti bodo zdaj razvrščeni glede na polje Employeeid in ne v polje _id.
Če se ukaz uspešno izvede, se prikaže naslednji izhod:
Izhod:
- NumIndexesBefore: 1 označuje število vrednosti polj (dejanska polja v zbirki), ki so bile v indeksih pred zagonom ukaza. Ne pozabite, da ima vsaka zbirka polje _id, ki se v indeks šteje tudi kot vrednost polja. Ker je polje indeksa _id del zbirke, ko je bilo prvotno ustvarjeno, je vrednost numIndexesBefore enaka 1.
- NumIndexesAfter: 2 označuje število poljskih vrednosti, ki so bile v indeksih po zagonu ukaza.
- Tu izhod "ok: 1" določa, da je bila operacija uspešna, novi indeks pa se doda zbirki.
Zgornja koda prikazuje, kako ustvariti indeks na podlagi ene vrednosti polja, lahko pa tudi indeks, ki temelji na več vrednostih polj.
Naslednji primer prikazuje, kako je to mogoče storiti;
db.Employee.createIndex({Employeeid:1, EmployeeName:1])
Razlaga kode:
- Metoda createIndex zdaj upošteva več vrednosti polja, zaradi česar bo indeks ustvarjen na podlagi "Employeeid" in "EmployeeName". Employeeid: 1 in EmployeeName: 1 označujeta, da je treba indeks ustvariti na teh dveh vrednostih polja, pri čemer: 1 pomeni, da mora biti v naraščajočem vrstnem redu.
Kako najti indekse: getindexes ()
Iskanje indeksa v MongoDB poteka z uporabo metode "getIndexes" .
Naslednji primer prikazuje, kako je to mogoče storiti;
db.Employee.getIndexes()
Razlaga kode:
- Metoda getIndexes se uporablja za iskanje vseh indeksov v zbirki.
Če se ukaz uspešno izvede, se prikaže naslednji izhod:
Izhod:
- Izhodni podatki vrnejo dokument, ki samo kaže, da sta v zbirki 2 indeksa, ki je polje _id, drugo pa polje id zaposlenega. Oznaka: 1 pomeni, da so vrednosti polj v indeksu ustvarjene v naraščajočem vrstnem redu.
Kako spustiti indekse: dropindex ()
Odstranjevanje indeksa v MongoDB se izvede z uporabo metode dropIndex.
Naslednji primer prikazuje, kako je to mogoče storiti;
db.Employee.dropIndex(Employeeid:1)
Razlaga kode:
- Metoda dropIndex zavzame zahtevane vrednosti polj, ki jih je treba odstraniti iz indeksa.
Če se ukaz uspešno izvede, se prikaže naslednji izhod:
Izhod:
- NIndexesWas: 3 označuje število vrednosti polj, ki so bile v indeksih pred zagonom ukaza. Ne pozabite, da ima vsaka zbirka polje _id, ki se v indeks šteje tudi kot vrednost polja.
- Izhod ok: 1 določa, da je bila operacija uspešna, polje "Employeeid" pa je odstranjeno iz indeksa.
Če želite v zbirki odstraniti vse indekse hkrati, lahko uporabite ukaz dropIndexes.
Naslednji primer prikazuje, kako je to mogoče storiti.
db.Employee.dropIndex()
Razlaga kode:
- Metoda dropIndexes bo spustila vse indekse, razen indeksa _id.
Če se ukaz uspešno izvede, se prikaže naslednji izhod:
Izhod:
- NIndexesWas: 2 označuje število vrednosti polj, ki so bile v indeksih pred zagonom ukaza.
- Še enkrat ne pozabite, da ima vsaka zbirka polje _id, ki se v indeks šteje tudi kot vrednost polja in ga MongoDB ne bo odstranil in na to kaže to sporočilo.
- Izhod ok: 1 določa, da je bila operacija uspešna.
Povzetek
- Določanje indeksov je pomembno za hitrejše in učinkovitejše iskanje dokumentov v zbirki.
- Indekse je mogoče ustvariti z uporabo metode createIndex. Indekse je mogoče ustvariti samo v enem polju ali več vrednostih polja.
- Indekse je mogoče najti z uporabo metode getIndexes.
- Kazala lahko odstranite z uporabo dropIndex za posamezne indekse ali dropIndex za spuščanje vseh indeksov.