Indexurile sunt foarte importante în orice bază de date, iar cu MongoDB nu este diferit. Cu ajutorul indicilor, efectuarea de interogări în MongoDB devine mai eficientă.
Dacă ați avea o colecție cu mii de documente fără indici, iar apoi efectuați o interogare pentru a găsi anumite documente, atunci, în acest caz, MongoDB ar trebui să scaneze întreaga colecție pentru a găsi documentele. Dar dacă ați avea indici, MongoDB ar folosi acești indici pentru a limita numărul de documente care trebuie căutate în colecție.
Indexurile sunt seturi de date speciale care stochează o parte parțială din datele colecției. Deoarece datele sunt parțiale, devine mai ușor de citit aceste date. Acest set parțial stochează valoarea unui anumit câmp sau a unui set de câmpuri ordonate în funcție de valoarea câmpului.
În acest tutorial, veți învăța –
- Cum să înțelegeți impactul indicilor
- Cum să creați indici: createIndex()
- Cum să găsiți indici: getindexes()
- Cum să eliminați indici: getindexes()
- Cum să eliminați indici: dropindex()
Înțelegerea impactului indicilor
Acum, chiar dacă din introducere am văzut că indicii sunt buni pentru interogări, dar dacă avem prea mulți indici pot încetini alte operații, cum ar fi Insert, Delete și Update.
Dacă există operații frecvente de inserare, ștergere și actualizare efectuate asupra documentelor, atunci indicii ar trebui să se schimbe la fel de des, ceea ce ar fi doar un cost suplimentar pentru colecție.
Exemplul de mai jos prezintă un exemplu de valori de câmp care ar putea constitui un index într-o colecție. Un index poate fi bazat fie pe un singur câmp din colecție, fie pe mai multe câmpuri din colecție.
În exemplul de mai jos, Employeeid „1” și EmployeeCode „AA” sunt utilizate pentru a indexa documentele din colecție. Astfel, atunci când se efectuează o căutare prin interogare, acești indici vor fi utilizați pentru a găsi rapid și eficient documentele solicitate în colecție.
Deci, chiar dacă interogarea de căutare se bazează pe EmployeeCode „AA”, acel document va fi returnat.
Cum se creează indici: createIndex()
Crearea unui indice în MongoDB se face prin utilizarea metodei „createIndex”.
Exemplul următor arată cum se adaugă un index la colecție. Să presupunem că avem aceeași colecție Employee care are numele câmpurilor „Employeeid” și „EmployeeName”.
db.Employee.createIndex({Employeeid:1})
Explicația codului:
- Metoda createIndex este utilizată pentru a crea un index bazat pe „Employeeid” al documentului.
- Parametrul „1” indică faptul că atunci când indexul este creat cu valorile Câmpului „Employeeid”, acestea trebuie să fie sortate în ordine crescătoare. Vă rugăm să rețineți că acest lucru este diferit de câmpul _id (Câmpul id este utilizat pentru a identifica în mod unic fiecare document din colecție) care este creat automat în colecție de către MongoDB. Documentele vor fi acum sortate în funcție de Employeeid și nu de câmpul _id.
Dacă comanda este executată cu succes, se va afișa următoarea ieșire:
Stragere:
- NumIndexesBefore: 1 indică numărul de valori ale câmpurilor (câmpurile reale din colecție) care se aflau în indexuri înainte de executarea comenzii. Nu uitați că fiecare colecție are câmpul _id, care contează, de asemenea, ca o valoare de câmp pentru index. Deoarece câmpul de index _id face parte din colecție atunci când aceasta este creată inițial, valoarea numIndexesBefore este 1.
- Numărul NumIndexesAfter: 2 indică numărul de valori ale câmpului care se aflau acolo în indici după ce a fost executată comanda.
- Aici se afișează „ok: 1” specifică faptul că operațiunea a avut succes, iar noul index este adăugat la colecție.
- Metoda createIndex ia acum în considerare mai multe valori de câmp, ceea ce va face ca indexul să fie creat pe baza „Employeeid” și „EmployeeName”. Employeeid:1 și EmployeeName:1 indică faptul că indexul ar trebui creat pe baza acestor 2 valori de câmp, iar :1 indică faptul că ar trebui să fie în ordine crescătoare.
- La ieșire se returnează un document care arată doar că există 2 indici în colecție, care este câmpul _id, iar celălalt este câmpul Employee id. :1 indică faptul că valorile câmpului din index sunt create în ordine crescătoare.
- Metoda dropIndex preia valorile câmpului necesar care trebuie să fie eliminat din index.
- The nIndexesWas: 3 indică numărul de valori de câmp care se aflau în indexuri înainte de a fi executată comanda. Nu uitați că fiecare colecție are câmpul _id care contează, de asemenea, ca o valoare Field pentru index.
- The ok: 1 de ieșire specifică faptul că operațiunea a avut succes, iar câmpul „Employeeid” este eliminat din index.
- Metoda dropIndexes va renunța la toți indicii, cu excepția indicelui _id.
- The nIndexesWas: 2 indică numărul de valori de câmp care existau în indici înainte de executarea comenzii.
- Amintiți-vă din nou că fiecare colecție are câmpul _id care contează, de asemenea, ca valoare Field pentru index, iar acesta nu va fi eliminat de MongoDB și asta este ceea ce indică acest mesaj.
- The ok: 1 precizează că operațiunea a avut succes.
Codul de mai sus arată cum se creează un index bazat pe o valoare de câmp, dar se poate crea, de asemenea, un index bazat pe mai multe valori de câmp.
Exemplul următor arată cum se poate face acest lucru;
db.Employee.createIndex({Employeeid:1, EmployeeName:1])
Explicația codului:
Cum se găsesc indici: getindexes()
Căutarea unui indice în MongoDB se face prin utilizarea metodei „getIndexes”.
Exemplul următor arată cum se poate face acest lucru;
db.Employee.getIndexes()
Explicația codului:
Stragere:
Cum se elimină indexurile: dropindex()
În MongoDB, eliminarea unui index se face prin utilizarea metodei dropIndex.
Exemplul următor arată cum se poate face acest lucru;
db.Employee.dropIndex(Employeeid:1)
Explicația codului:
În cazul în care comanda este executată cu succes, se va afișa următoarea ieșire:
Stragere:
Pentru a elimina toți indexurile deodată din colecție, se poate utiliza comanda dropIndexes.
Exemplul următor arată cum se poate face acest lucru.
db.Employee.dropIndex()
Explicația codului:
În cazul în care comanda este executată cu succes, se va afișa următoarea ieșire:
Stragere:
Summary
- Definirea indicilor este importantă pentru o căutare mai rapidă și mai eficientă a documentelor dintr-o colecție.
- Indexurile pot fi create utilizând metoda createIndex. Indicii pot fi creați pe un singur câmp sau pe mai multe valori de câmp.
- Indexurile pot fi găsite prin utilizarea metodei getIndexes.
- Indexurile pot fi eliminate prin utilizarea metodei dropIndex pentru indici unici sau dropIndexes pentru eliminarea tuturor indicilor.
.