MongoDB Vodič za indeksiranje – primjer createIndex(), dropindex().

Indeksi su vrlo važni u svakoj bazi podataka, a sa MongoDB nije drugačije. Uz korištenje indeksa, izvođenje upita u MongoDB postaje učinkovitiji.

Ako ste imali zbirku s tisućama dokumenata bez indeksa, a zatim tražite da pronađete određene dokumente, tada u tom 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 zbirke. 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 smo iz uvoda vidjeli da su indeksi dobri za upite, ali imati previše indeksa može usporiti druge operacije kao što su operacije umetanja, brisanja i ažuriranja.

Ako se na dokumentima provode česte operacije umetanja, brisanja i ažuriranja, tada bi se indeksi morali toliko često mijenjati, što bi samo predstavljalo dodatni trošak za zbirku.

Donji primjer pokazuje primjer vrijednosti polja koje bi mogle č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 pretraživanje upita, ti će se indeksi koristiti za brzo i učinkovito pronalaženje potrebnih dokumenata u zbirci.

Dakle, čak i ako se upit za pretraživanje temelji na EmployeeCode "AA", taj će dokument biti vraćen.

Razumijevanje utjecaja indeksa

Kako stvoriti indekse: createIndex()

Stvaranje indeksa u MongoDB vrši se pomoću "createIndex”Metoda.

Sljedeći primjer pokazuje kako dodati indeks u kolekciju. Pretpostavimo da imamo istu kolekciju zaposlenika koja ima nazive polja "Employeeid" i "EmployeeName".

Stvorite indekse: createIndex()

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

Objašnjenje koda:

  1. The createIndex Metoda se koristi za stvaranje indeksa na temelju "Employeeid" dokumenta.
  2. Parametar '1' označava da kada se indeks kreira s vrijednostima polja "Employeeid", one trebaju biti poredane uzlaznim redoslijedom. Imajte na umu da se ovo razlikuje od polja _id (Polje ID-a koristi se za jedinstvenu identifikaciju svakog dokumenta u zbirci) koje se automatski stvara u zbirci od strane MongoDB. Dokumenti će sada biti sortirani prema Employeeid, a ne prema polju _id.

Ako je naredba uspješno izvršena, prikazat će se sljedeći izlaz:

Izlaz:

Stvorite indekse: createIndex()

  1. numIndexesBefore: 1 označava broj vrijednosti polja (stvarna polja u kolekciji) koja su bila tamo u indeksima prije pokretanja naredbe. Upamtite da svaka zbirka ima polje _id koje se također računa kao vrijednost polja za indeks. Budući da je indeksno polje _id dio zbirke kada se inicijalno kreira, vrijednost numIndexesBefore je 1.
  2. numIndexesAfter: 2 označava broj vrijednosti polja koje su bile tamo u indeksima nakon pokretanja naredbe.
  3. Ovdje izlaz "ok: 1" označava da je operacija bila uspješna, a novi indeks je dodan u kolekciju.

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;

Stvorite indekse: createIndex()

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

Objašnjenje koda:

  • Metoda createIndex sada uzima u obzir višestruke vrijednosti polja koje će sada uzrokovati stvaranje indeksa 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 koji označava da bi trebao biti u uzlaznom redoslijedu.

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;

Pronađite indekse: getindexes()

db.Employee.getIndexes()

Objašnjenje koda:

  • Metoda getIndexes koristi se za pronalaženje svih indeksa u zbirci.

Ako je naredba uspješno izvršena, prikazat će se sljedeći izlaz:

Izlaz:

Pronađite indekse: getindexes()

  • Izlaz vraća dokument koji samo pokazuje da postoje 2 indeksa u kolekciji, a to je polje _id, a drugo je polje ID zaposlenika. :1 označava da su vrijednosti polja u indeksu stvorene uzlaznim redoslijedom.

Kako ispustiti indekse: dropindex()

Uklanjanje indeksa u MongoDB radi se metodom dropIndex.

Sljedeći primjer pokazuje kako se to može učiniti;

Ispusti indekse: dropindex()

db.Employee.dropIndex(Employeeid:1)

Objašnjenje koda:

  • Metoda dropIndex uzima tražene vrijednosti polja koje je potrebno ukloniti iz indeksa.

Ako je naredba uspješno izvršena, prikazat će se sljedeći izlaz:

Izlaz:

Ispusti indekse: dropindex()

  1. nIndexesWas: 3 označava broj vrijednosti polja koje su bile tamo u indeksima prije pokretanja naredbe. Upamtite da svaka zbirka ima polje _id koje se također računa kao vrijednost polja za indeks.
  2. 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.

Ispusti indekse: dropindex()

db.Employee.dropIndex()

Objašnjenje koda:

  • Metoda dropIndexes ispustit će sve indekse osim indeksa _id.

Ako je naredba uspješno izvršena, prikazat će se sljedeći izlaz:

Izlaz:

Ispusti indekse: dropindex()

  1. nIndexesWas: 2 označava broj vrijednosti polja koje su bile tamo u indeksima prije pokretanja naredbe.
  2. Ponovno zapamtite da svaka kolekcija ima polje _id koje se također računa kao vrijednost polja u indeksu i to neće biti uklonjeno MongoDB a to je ono što ova poruka ukazuje.
  3. Izlaz ok: 1 označava da je operacija bila uspješna.

rezime

  • Definiranje indeksa važno je za brže i učinkovitije pretraživanje dokumenata u zbirci.
  • Indeksi se mogu kreirati pomoću metode createIndex. Indeksi se mogu kreirati na samo jednom polju ili na više vrijednosti polja.
  • Indeksi se mogu pronaći pomoću metode getIndexes.
  • Indeksi se mogu ukloniti korištenjem dropIndexa za pojedinačne indekse ili dropIndexesa za ispuštanje svih indeksa.