MongoDB - Indexing (Indeksiranje)

Kao i u svakoj bazi podataka tako i u MongoDB, indeksiranje je jako bitno zbog boljih performansi upita.
Ukoliko imate mnogo dokumenata unutar kolekcije, i napravite takav upit da se pronađe određeni dokument, u takvom slučaju MongoDB prolazi kroz celu kolekciju i dok ne pronađe odgovarajuća dokumenta, međutim ukoliko postoje index-i, MongoDB koristi te index-e da bi smanjio broj dokumenata kroz koje treba da prođe, i na taj način poboljšavaju se performanse pretraživanja.

Ipak ne treba se preterivati sa indeksiranjem polja, i bitno je napraviti dobru strukturu dokumenta i odrediti dobra polja za indeksiranje. Index može biti baziran na jednom polju ili na više polja u kolekciji. Mora se voditi računa o indeksima jer ukoliko postoji previse indeksiranih polja to može dovesti do smanjenja performansi operacija kao što su Insert, Delete ili Update.

Zadatak 28 - Unutar kolekcije student napraviti index od polja "student_id"

Za kreiranje index-a koristi se MongoDB metoda createIndex(). Sintaksa je sledeća
db.COLLECTION-NAME.createIndex({KEY:VALUE, .... }). Pri čemu key predstavlja polje koje će biti index a value može imati vrednost 1 ili 0 zavisno od toga da li želite rastući ili opadajući redosled.

Rešenje

> use studenti
switched to db studenti
> db.student.createIndex({student_id:1})
{
    "createdCollectionAutomatically" : false,
    "numIndexesBefore" : 1,
    "numIndexesAfter" : 2,
    "ok" : 1
}

Dodatak

Ono što dobijete kao odgovor od MongoDB kada napravite index je sledeće:

  • numIndexesBefore: 1 - koliko indeksa je bilo pre pozvane metode
  • numIndexesAfter: 2 - koliko indeksa ima posle pozvane metode
  • ok: 1 - status da je indeksiranje uspešno prošlo

Zadatak 29 - Prikaži sve indekse unutar kolekcije student

Za prikaz svih Index-a unutar kolekcije koristi se MongoDB metoda getIndexes().
Sintaksa je sledeća db.COLLECTION-NAME.getIndexes().

Rešenje

> use studenti
switched to db studenti
> db.student.getIndexes()
[
    {
        "v" : 1,
        "key" : {
            "_id" : 1
        },
        "name" : "_id_",
        "ns" : "studenti.student"
    },
    {
        "v" : 1,
        "key" : {
            "student_id" : 1
        },
        "name" : "student_id_1",
        "ns" : "studenti.student"
    }
]

Dodatak

Metoda getIndexes() vraća dokument koji prikazuje listu svih indeksa. Ovde vidimo da imamo dva

...
   "key" : {
      "_id" : 1
   },
...
   "key" : {
      "student_id" : 1
   },
....

Broj jedan pokazuje da je izabran rastući redosled. (Ascending order).


Zadatak 30 - Obrisati Index "student_id" iz kolekcije student

Za brisanje Index-a u MongoDB-u koristi se dropIndex() metod.
Sintaksa db.COLLECTION-NAME.dropindex({KEY:VALUE})

Rešenje

> use studenti
switched to db studenti
> db.student.dropIndex({student_id:1})
{ "nIndexesWas" : 2, "ok" : 1 }

Dodatak

Ukoliko želite da obrišete sve dodate Index-e možete koristi MongoDB metodu dropIndexes().
Sintaksa je db.COLLECTION-NAME.dropIndexes().


Zadatak 31 - Dodati Index sačinjen od polja "student_id" u opadajućem redosledu i "smer" u rastućem redosledu unutar kolekcije student

Rešenje

> use studenti
switched to db studenti
> db.student.createIndex({student_id: -1, smer: 1})
{
    "createdCollectionAutomatically" : false,
    "numIndexesBefore" : 1,
    "numIndexesAfter" : 2,
    "ok" : 1
}

results matching ""

    No results matching ""