Indexurile sunt foarte importante în orice bază de date, iar cu MongoDB nu este diferit. Odată cu utilizarea indexurilor, efectuarea interogărilor în MongoDB devine mai eficientă.
Dacă ați avea o colecție cu mii de documente fără indexuri și apoi căutați să găsiți anumite documente, atunci, în acest caz, MongoDB ar trebui să scaneze întreaga colecție pentru a găsi documentele. Dar dacă ai avea indexuri, MongoDB ar folosi acești indici pentru a limita numărul de documente care trebuiau căutate în colecție.
Indexurile sunt seturi de date speciale care stochează o parte parțială a datelor colecției. Deoarece datele sunt parțiale, devine mai ușor să le citiți. Acest set parțial stochează valoarea unui câmp specific sau a unui set de câmpuri ordonate după valoarea câmpului.
În acest tutorial, veți învăța -
- Înțelegerea impactului indexurilor
- Cum se creează indexuri: createIndex ()
- Cum să găsiți indexuri: getindexes ()
- Cum să eliminați indexurile: dropindex ()
Înțelegerea impactului indexurilor
Acum, chiar dacă din introducere am văzut că indicii sunt buni pentru interogări, dar având prea mulți indici poate încetini alte operații, cum ar fi operația Inserare, Ștergere și Actualizare.
Dacă sunt frecvente operațiuni de inserare, ștergere și actualizare efectuate pe documente, atunci indexurile ar trebui să le schimbe deseori, ceea ce ar fi doar o cheltuială pentru colecție.
Exemplul de mai jos prezintă un exemplu despre valorile câmpurilor care ar putea constitui un index într-o colecție. Un index poate fi bazat pe un singur câmp din colecție sau se poate baza pe mai multe câmpuri din colecție.
În exemplul de mai jos, Employeeid "1" și EmployeeCode "AA" sunt utilizate pentru indexarea documentelor din colecție. Deci, atunci când se face o căutare de interogare, acești indici vor fi folosiți pentru a găsi rapid și eficient documentele necesare din colecție.
Deci, chiar dacă interogarea de căutare se bazează pe EmployeeCode "AA", acel document va fi returnat.
Cum se creează indexuri: createIndex ()
Crearea unui index în MongoDB se face folosind metoda „ createIndex ”.
Următorul exemplu arată cum se adaugă indexul la colecție. Să presupunem că avem aceeași colecție de angajați care are numele câmpului „Employeeid” și „EmployeeName”.
db.Employee.createIndex({Employeeid:1})
Explicatie cod:
- Metoda createIndex este utilizată pentru a crea un index bazat pe „Employeeid” din document.
- Parametrul „1” indică faptul că atunci când indexul este creat cu valorile câmpului „Employeeid”, acestea ar trebui 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 MongoDB. Documentele vor fi acum sortate conform câmpului Employeeid și nu în câmpul _id.
Dacă comanda este executată cu succes, va fi afișată următoarea ieșire:
Ieșire:
- NumIndexesBefore: 1 indică numărul de valori de câmp (câmpurile reale din colecție) care erau acolo în indexuri înainte de executarea comenzii. Amintiți-vă că fiecare colecție are câmpul _id, care contează, de asemenea, ca valoare câmp la index. Deoarece câmpul index _id face parte din colecție atunci când este creat inițial, valoarea numIndexesBefore este 1.
- NumIndexesAfter: 2 indică numărul de valori de câmp care erau acolo în indici după executarea comenzii.
- Aici rezultatul „ok: 1” specifică faptul că operațiunea a avut succes, iar noul index este adăugat la colecție.
Codul de mai sus arată cum să creați un index pe baza unei valori de câmp, dar se poate crea și un index pe baza mai multor valori de câmp.
Următorul exemplu arată cum se poate face acest lucru;
db.Employee.createIndex({Employeeid:1, EmployeeName:1])
Explicatie cod:
- Metoda createIndex ia acum în considerare mai multe valori de câmp care vor determina acum crearea indexului pe baza „Employeeid” și „EmployeeName”. Employeeid: 1 și EmployeeName: 1 indică faptul că indexul trebuie creat pe aceste 2 valori de câmp, cu: 1 indicând că acesta ar trebui să fie în ordine crescătoare.
Cum să găsiți indexuri: getindexes ()
Găsirea unui index în MongoDB se face folosind metoda „getIndexes” .
Următorul exemplu arată cum se poate face acest lucru;
db.Employee.getIndexes()
Explicatie cod:
- Metoda getIndexes este utilizată pentru a găsi toți indicii dintr-o colecție.
Dacă comanda este executată cu succes, va fi afișată următoarea ieșire:
Ieșire:
- Ieșirea returnează un document care arată doar că există 2 indexuri în colecție, care este câmpul _id, iar celălalt este câmpul ID angajat. 1 indică faptul că valorile câmpului din index sunt create în ordine crescătoare.
Cum să eliminați indexurile: dropindex ()
Eliminarea unui index în MongoDB se face folosind metoda dropIndex.
Următorul exemplu arată cum se poate face acest lucru;
db.Employee.dropIndex(Employeeid:1)
Explicatie cod:
- Metoda dropIndex ia valorile de câmp necesare care trebuie eliminate din index.
Dacă comanda este executată cu succes, va fi afișată următoarea ieșire:
Ieșire:
- NIndexesWas: 3 indică numărul de valori de câmp care erau acolo în indexuri înainte de executarea comenzii. Amintiți-vă că fiecare colecție are câmpul _id, care contează, de asemenea, ca valoare câmp la index.
- Ieșirea ok: 1 specifică faptul că operațiunea a avut succes, iar câmpul „Employeeid” este eliminat din index.
Pentru a elimina toate indexurile simultan în colecție, se poate utiliza comanda dropIndexes.
Următorul exemplu arată cum se poate face acest lucru.
db.Employee.dropIndex()
Explicatie cod:
- Metoda dropIndexes va renunța la toți indicii, cu excepția indexului _id.
Dacă comanda este executată cu succes, va fi afișată următoarea ieșire:
Ieșire:
- NIndexesWas: 2 indică numărul de valori de câmp care erau acolo în indexuri înainte de executarea comenzii.
- Amintiți-vă din nou că fiecare colecție are câmpul _id, care contează, de asemenea, ca valoare de câmp la index și care nu va fi eliminat de MongoDB și asta indică acest mesaj.
- Ieșirea ok: 1 specifică faptul că operațiunea a avut succes.
rezumat
- Definirea indexurilor este importantă pentru căutarea mai rapidă și eficientă a documentelor dintr-o colecție.
- Indexurile pot fi create utilizând metoda createIndex. Se pot crea indexuri pe un singur câmp sau pe mai multe valori de câmp.
- Indexurile pot fi găsite folosind metoda getIndexes.
- Indicii pot fi eliminați utilizând dropIndex pentru indexuri unice sau dropIndexes pentru eliminarea tuturor indexurilor.