MongoDB Indeksiranje: createIndex() i dropIndex()
โก Pametni saลพetak
MongoDB Indeksi pohranjuju ureฤeni podskup polja kolekcije tako da upiti mogu pronaฤi dokumente bez skeniranja svakog zapisa. Metode createIndex, getIndexes i dropIndex grade, popisuju i uklanjaju ove strukture kritiฤne za performanse.

ล to su MongoDB Indeksi?
Indeksi su vrlo vaลพni u svakoj bazi podataka, a sa MongoDB nije drugaฤije. Koriลกtenjem indeksa, izvoฤenje upita u MongoDB postaje uฤinkovitiji.
Ako imate kolekciju s tisuฤama dokumenata bez indeksa, a zatim pretraลพujete kako biste pronaลกli odreฤene dokumente, u takvom sluฤaju MongoDB treba skenirati cijelu kolekciju da pronaฤe dokumente. Ali ako imate indekse, MongoDB koristio bi ove indekse kako bi ograniฤio broj dokumenata koje je trebalo pretraลพivati โโu zbirci.
Indeksi su posebni skupovi podataka koji pohranjuju djelomiฤni dio podataka kolekcije. Buduฤi da su podaci djelomiฤni, lakลกe ih je ฤitati. Ovaj djelomiฤni skup pohranjuje vrijednost odreฤenog polja ili skupa polja, poredanih prema vrijednosti polja.
Razumijevanje utjecaja indeksa
Iako je uvod pokazao da su indeksi dobri za upite, 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, tada bi se indeksi morali tako ฤesto mijenjati, ลกto bi samo predstavljalo dodatno optereฤenje za kolekciju.
Donji primjer pokazuje koje vrijednosti polja mogu ฤiniti indeks u kolekciji. Indeks se moลพe temeljiti na samo jednom polju u kolekciji ili na viลกe polja u kolekciji.
U donjem primjeru, Employeeid "1" i EmployeeCode โAAโ se koriste za indeksiranje dokumenata u zbirci. Dakle, kada se izvrลกi pretraลพivanje upita, ovi indeksi ฤe se koristiti za brzo i uฤinkovito pronalaลพenje potrebnih dokumenata u zbirci.
Dakle, ฤak i ako je upit za pretraลพivanje zasnovan na zaposlenikuCode โAAโ, taj bi dokument bio vraฤen.
Kako stvoriti indekse: createIndex()
Izrada indeksa u MongoDB vrลกi se pomoฤu createIndex metoda.
Sljedeฤi primjer pokazuje kako dodati indeks kolekciji. Pretpostavimo da imamo istu kolekciju zaposlenika, koja ima nazive polja โEmployeeidโ i โEmployeeNameโ.
db.Employee.createIndex({Employeeid:1})
Code Objaลกnjenje:
- The createIndex Metoda se koristi za stvaranje indeksa na temelju "Employeeid" dokumenta.
- Parametar โ1โ oznaฤava da kada se indeks kreira s vrijednostima polja โEmployeeidโ, one trebaju biti sortirane uzlaznim redoslijedom. Imajte na umu da se to razlikuje od polja _id (koje jedinstveno identificira svaki dokument) koje MongoDB automatski se stvara. Dokumenti ฤe sada biti sortirani prema Employeeid-u, a ne prema polju _id.
Ako se naredba uspjeลกno izvrลกi, prikazat ฤe se sljedeฤi izlaz:
Izlaz:
- Vrijednost numIndexesBefore: 1 oznaฤava broj vrijednosti polja u indeksima prije pokretanja naredbe. Svaka kolekcija ima polje _id, koje se takoฤer raฤuna kao vrijednost polja, pa je numIndexesBefore 1.
- Vrijednost numIndexesAfter: 2 oznaฤava broj vrijednosti polja u indeksima nakon ลกto je naredba pokrenuta.
- Izlaz โok: 1โ oznaฤava da je operacija bila uspjeลกna i da je novi indeks dodan u kolekciju.
Gornji kod pokazuje kako stvoriti indeks na temelju jedne vrijednosti polja, ali moguฤe je stvoriti i 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})
Metoda createIndex sada uzima u obzir viลกe vrijednosti polja, ลกto ฤe uzrokovati stvaranje indeksa na temelju "Employeeid" i "EmployeeName". Employeeid:1 i EmployeeName:1 oznaฤavaju da indeks treba stvoriti na temelju ove dvije vrijednosti polja, pri ฤemu :1 oznaฤava uzlazni redoslijed. To se naziva sloลพeni indeks.
Kako pronaฤi indekse: getIndexes()
Pronalaลพenje indeksa u MongoDB vrลกi se pomoฤu getIndexes metoda. Sljedeฤi primjer pokazuje kako se to moลพe uฤiniti:
db.Employee.getIndexes()
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 pokazuje da u kolekciji postoje dva indeksa: polje _id i polje Employeeid. :1 oznaฤava da su vrijednosti polja u indeksu kreirane uzlaznim redoslijedom.
Kako ukloniti indekse: dropIndex()
Uklanjanje indeksa u MongoDB vrลกi se pomoฤu dropIndex metoda. Sljedeฤi primjer pokazuje kako se to moลพe uฤiniti:
db.Employee.dropIndex({Employeeid:1})
Metoda dropIndex uzima potrebne vrijednosti polja koje je potrebno ukloniti iz indeksa.
Ako se naredba uspjeลกno izvrลกi, prikazat ฤe se sljedeฤi izlaz:
Izlaz:
- Vrijednost nIndexesWas: 3 oznaฤava broj vrijednosti polja u indeksima prije pokretanja naredbe. Svaka kolekcija ima polje _id, koje se takoฤer raฤuna kao vrijednost polja.
- Izlaz ok: 1 oznaฤava da je operacija bila uspjeลกna, a polje "Employeeid" uklanja se iz indeksa.
Za uklanjanje svih indeksa odjednom u kolekciji, moลพe se koristiti naredba dropIndexes. Sljedeฤi primjer pokazuje kako se to moลพe uฤiniti:
db.Employee.dropIndexes()
Metoda dropIndexes ispustit ฤe sve indekse osim indeksa _id.
Ako se naredba uspjeลกno izvrลกi, prikazat ฤe se sljedeฤi izlaz:
Izlaz:
- Vrijednost nIndexesWas: 2 oznaฤava broj vrijednosti polja u indeksima prije izvrลกavanja naredbe.
- Svaka kolekcija ima polje _id, koje se takoฤer raฤuna kao vrijednost polja i neฤe ga ukloniti MongoDB; to je ono ลกto ova poruka pokazuje.
- Izlaz ok: 1 oznaฤava da je operacija bila uspjeลกna.










