Indexurile sprijină rezolvarea eficientă a interogărilor. Fără indici, MongoDB trebuie să scaneze fiecare document dintr-o colecție pentru a selecta acele documente care corespund instrucțiunii de interogare. Această scanare este extrem de ineficientă și necesită ca MongoDB să proceseze un volum mare de date.
Indexurile sunt structuri de date speciale, care stochează o mică parte a setului de date într-o formă ușor de parcurs. Indexul stochează valoarea unui anumit câmp sau a unui set de câmpuri, ordonat după valoarea câmpului specificat în index.
Metoda createIndex()
Pentru a crea un index, trebuie să utilizați metoda createIndex() a MongoDB.
Sintaxa
Sintaxa de bază a metodei createIndex() este următoarea().
>db.COLLECTION_NAME.createIndex({KEY:1})
Aici cheia este numele câmpului pe care doriți să creați indexul și 1 este pentru ordinea crescătoare. Pentru a crea indexul în ordine descrescătoare trebuie să utilizați -1.
Exemplu
>db.mycol.createIndex({"title":1}){"createdCollectionAutomatically" : false,"numIndexesBefore" : 1,"numIndexesAfter" : 2,"ok" : 1}>
În metoda createIndex() puteți trece mai multe câmpuri, pentru a crea indexul pe mai multe câmpuri.
>db.mycol.createIndex({"title":1,"description":-1})>
Această metodă acceptă, de asemenea, o listă de opțiuni (care sunt opționale). Lista este următoarea –
Parametru | Tip | Descriere |
---|---|---|
background | Boolean | Constituie indexul în fundal, astfel încât construirea unui index să nu blocheze alte activități ale bazei de date. Specificați true pentru a construi în fundal. Valoarea implicită este false. |
unique | Boolean | Creează un index unic, astfel încât colecția nu va accepta inserarea de documente în care cheia sau cheile indexului se potrivesc cu o valoare existentă în index. Specificați true pentru a crea un index unic. Valoarea implicită este false. |
name | string | Numele indexului. Dacă nu este specificat, MongoDB generează un nume de index prin concatenarea numelor câmpurilor indexate și a ordinii de sortare. | sparse | Boolean | Dacă este adevărat, indexul face referire numai la documentele cu câmpul specificat. Acești indici utilizează mai puțin spațiu, dar se comportă diferit în anumite situații (în special sortări). Valoarea implicită este false. |
expireAfterSeconds | integer | Specifică o valoare, în secunde, ca TTL pentru a controla cât timp MongoDB păstrează documentele din această colecție. |
weights | document | Ponderea este un număr cuprins între 1 și 99.999 și denotă importanța câmpului în raport cu celelalte câmpuri indexate în ceea ce privește scorul. |
default_language | string | Pentru un index de text, limba care determină lista de cuvinte de oprire și regulile pentru stemmer și tokenizer. Valoarea implicită este English. |
language_override | string | Pentru un index de text, specificați numele câmpului din document care conține, limba care să înlocuiască limba implicită. Valoarea implicită este language. |
Metoda dropIndex()
Puteți renunța la un anumit index utilizând metoda dropIndex() a MongoDB.
Sintaxa
Sintaxa de bază a metodei DropIndex() este următoarea().
>db.COLLECTION_NAME.dropIndex({KEY:1})
Aici cheia este numele fișierului pe care doriți să creați indexul și 1 este pentru ordinea crescătoare. Pentru a crea indexul în ordine descrescătoare trebuie să folosiți -1.
Exemplu
> db.mycol.dropIndex({"title":1}){"ok" : 0,"errmsg" : "can't find index with key: { title: 1.0 }","code" : 27,"codeName" : "IndexNotFound"}
Metoda dropIndexes()
Această metodă șterge mai mulți indici (specificați) pe o colecție.
Sintaxa
Sintaxa de bază a metodei DropIndexes() este următoarea() –
>db.COLLECTION_NAME.dropIndexes()
Exemplu
Să presupunem că am creat 2 indexuri în colecția numită mycol, așa cum se arată mai jos –
> db.mycol.createIndex({"title":1,"description":-1})
Exemplul următor elimină indicii creați mai sus din mycol –
>db.mycol.dropIndexes({"title":1,"description":-1}){ "nIndexesWas" : 2, "ok" : 1 }>
Metoda getIndexes()
Această metodă returnează descrierea tuturor indicilor din colecție.
Sintaxa
În cele ce urmează este sintaxa de bază a metodei getIndexes() –
db.COLLECTION_NAME.getIndexes()
Exemplu
Să presupunem că am creat 2 indexuri în colecția numită mycol așa cum se arată mai jos –
> db.mycol.createIndex({"title":1,"description":-1})
Exemplul următor recuperează toți indicii din colecția mycol –
> db.mycol.getIndexes()>
.