Indeksi su vrlo važni u bilo kojoj bazi podataka, a s MongoDB se ne razlikuje. Korištenjem indeksa izvršavanje upita u MongoDB-u postaje učinkovitije.
Ako ste imali zbirku s tisućama dokumenata bez indeksa, a zatim tražite da pronađete određene dokumente, tada bi u tom slučaju MongoDB trebao skenirati cijelu kolekciju kako bi pronašao dokumente. Ali da imate indekse, MongoDB bi ih koristio da ograniči broj dokumenata koji se moraju pretraživati u zbirci.
Indeksi su posebni skupovi podataka koji pohranjuju djelomični dio podataka zbirke. Budući da su podaci djelomični, postaje lakše čitati ih. Ovaj djelomični skup pohranjuje vrijednost određenog polja ili skup polja poredanih prema vrijednosti polja.
U ovom vodiču naučit ćete -
- Razumijevanje utjecaja indeksa
- Kako stvoriti indekse: createIndex ()
- Kako pronaći indekse: getindexes ()
- Kako ispustiti indekse: dropindex ()
Razumijevanje utjecaja indeksa
Iako smo iz uvoda vidjeli da su indeksi dobri za upite, ali previše indeksa može usporiti druge operacije poput umetanja, brisanja i ažuriranja.
Ako se na dokumentima često izvode operacije umetanja, brisanja i ažuriranja, indeksi bi se trebali tako često mijenjati, što bi bio samo režijski troškovi za zbirku.
Sljedeći primjer prikazuje primjer koje vrijednosti polja mogu činiti indeks u zbirci. Indeks se može temeljiti na samo jednom polju u zbirci ili se može temeljiti na više polja u zbirci.
U donjem primjeru, Employeeid "1" i EmployeeCode "AA" koriste se za indeksiranje dokumenata u zbirci. Dakle, kada se izvrši pretraga upita, ti će se indeksi koristiti za brzo i učinkovito pronalaženje potrebnih dokumenata u zbirci.
Dakle, čak i ako se upit za pretragu temelji na EmployeeCode "AA", taj će se dokument vratiti.
Kako stvoriti indekse: createIndex ()
Stvaranje indeksa u MongoDB vrši se metodom " createIndex ".
Sljedeći primjer pokazuje kako dodati indeks u zbirku. Pretpostavimo da imamo istu kolekciju zaposlenika koja ima nazive polja "Employeeid" i "EmployeeName".
db.Employee.createIndex({Employeeid:1})
Objašnjenje koda:
- Način createIndex koristi se za stvaranje indeksa na temelju "Employeeid" dokumenta.
- Parametar '1' označava da ih treba stvoriti u rastućem redoslijedu kada se indeks kreira s vrijednostima polja "Employeeid". Imajte na umu da se ovo razlikuje od polja _id (polje id se koristi za jedinstvenu identifikaciju svakog dokumenta u zbirci) koje MongoDB automatski kreira u zbirci. Dokumenti će se sada sortirati prema Employeeid, a ne _id polju.
Ako se naredba uspješno izvrši, prikazat će se sljedeći izlaz:
Izlaz:
- NumIndexesBefore: 1 označava broj vrijednosti polja (stvarna polja u zbirci) koje su bile u indeksima prije pokretanja naredbe. Ne zaboravite da svaka zbirka ima polje _id koje se u indeks također računa kao vrijednost polja. Budući da je polje indeksa _id dio zbirke kada je inicijalno kreirano, vrijednost numIndexesBefore je 1.
- NumIndexesAfter: 2 označava broj vrijednosti polja koje su se nalazile u indeksima nakon pokretanja naredbe.
- Ovdje izlaz "ok: 1" navodi da je operacija bila uspješna, a novi indeks se dodaje u zbirku.
Gornji kod pokazuje kako stvoriti indeks na temelju jedne vrijednosti polja, ali također se može stvoriti indeks na temelju više vrijednosti polja.
Sljedeći primjer pokazuje kako se to može učiniti;
db.Employee.createIndex({Employeeid:1, EmployeeName:1])
Objašnjenje koda:
- Metoda createIndex sada uzima u obzir više vrijednosti polja zbog kojih će indeks sada biti stvoren na temelju "Employeeid" i "EmployeeName". Employeeid: 1 i EmployeeName: 1 označavaju da bi indeks trebao biti kreiran na ove 2 vrijednosti polja s: 1 što znači da bi trebao biti u uzlaznom redoslijedu.
Kako pronaći indekse: getindexes ()
Pronalaženje indeksa u MongoDB vrši se metodom "getIndexes" .
Sljedeći primjer pokazuje kako se to može učiniti;
db.Employee.getIndexes()
Objašnjenje koda:
- Metoda getIndexes koristi se za pronalaženje svih indeksa u zbirci.
Ako se naredba uspješno izvrši, prikazat će se sljedeći izlaz:
Izlaz:
- Izlaz vraća dokument koji samo pokazuje da u zbirci postoje 2 indeksa, a to je polje _id, a drugo je polje id zaposlenika. Oznaka: 1 označava da su vrijednosti polja u indeksu kreirane uzlaznim redoslijedom.
Kako ispustiti indekse: dropindex ()
Uklanjanje indeksa u MongoDB vrši se metodom dropIndex.
Sljedeći primjer pokazuje kako se to može učiniti;
db.Employee.dropIndex(Employeeid:1)
Objašnjenje koda:
- Metoda dropIndex uzima potrebne vrijednosti polja koje treba ukloniti iz indeksa.
Ako se naredba uspješno izvrši, prikazat će se sljedeći izlaz:
Izlaz:
- NIndexesWas: 3 označava broj vrijednosti polja koje su se nalazile u indeksima prije pokretanja naredbe. Ne zaboravite da svaka zbirka ima polje _id koje se u indeks također računa kao vrijednost polja.
- Izlaz ok: 1 navodi da je operacija bila uspješna, a polje "Employeeid" uklanja se iz indeksa.
Da biste uklonili sve indekse odjednom u zbirci, možete upotrijebiti naredbu dropIndexes.
Sljedeći primjer pokazuje kako se to može učiniti.
db.Employee.dropIndex()
Objašnjenje koda:
- Metoda dropIndexes ispustit će sve indekse, osim indeksa _id.
Ako se naredba uspješno izvrši, prikazat će se sljedeći izlaz:
Izlaz:
- NIndexesWas: 2 označava broj vrijednosti polja koje su bile u indeksima prije pokretanja naredbe.
- Sjetite se opet da svaka zbirka ima polje _id koje se u indeks također računa kao vrijednost polja, a MongoDB ga neće ukloniti i na to ukazuje ova poruka.
- Izlaz ok: 1 navodi da je operacija bila uspješna.
Sažetak
- Utvrđivanje indeksa važno je za brže i učinkovitije pretraživanje dokumenata u zbirci.
- Indeksi se mogu kreirati metodom createIndex. Indeksi se mogu kreirati na samo jednom polju ili na više vrijednosti polja.
- Indekse je moguće pronaći pomoću metode getIndexes.
- Indeksi se mogu ukloniti pomoću dropIndex za pojedinačne indekse ili dropIndex za ispuštanje svih indeksa.