Az indexek támogatják a lekérdezések hatékony megoldását. Indexek nélkül a MongoDB-nek egy gyűjtemény minden dokumentumát át kell vizsgálnia, hogy kiválassza azokat a dokumentumokat, amelyek megfelelnek a lekérdezési utasításnak. Ez a beolvasás rendkívül gazdaságtalan, és a MongoDB-nek nagy mennyiségű adatot kell feldolgoznia.
Az indexek olyan speciális adatstruktúrák, amelyek az adathalmaz egy kis részét könnyen bejárható formában tárolják. Az index egy adott mező vagy mezőkészlet értékét tárolja, az indexben megadott mező értéke szerint rendezve.
A createIndex() módszer
Az index létrehozásához a MongoDB createIndex() módszerét kell használni.
Szintaktika
A createIndex() metódus alapvető szintaxisa a következő().
>db.COLLECTION_NAME.createIndex({KEY:1})
Itt a kulcs annak a mezőnek a neve, amelyre indexet szeretnénk létrehozni, az 1 pedig a növekvő sorrendet jelenti. Az index csökkenő sorrendben történő létrehozásához -1-et kell használni.
Példa
>db.mycol.createIndex({"title":1}){"createdCollectionAutomatically" : false,"numIndexesBefore" : 1,"numIndexesAfter" : 2,"ok" : 1}>
A createIndex() metódus több mezőt is átadhat, hogy indexet hozzon létre több mezőn.
>db.mycol.createIndex({"title":1,"description":-1})>
Ez a metódus opciók listáját is elfogadja (amelyek opcionálisak). A következő a lista –
Parameter | Type | Description |
---|---|---|
background | Boolean | Az indexet a háttérben építi, hogy az index építése ne blokkolja az adatbázis egyéb tevékenységeit. A háttérben történő építéshez adja meg a true értéket. Az alapértelmezett érték false. |
unique | Boolean | Egyedi indexet hoz létre, hogy a gyűjtemény ne fogadjon el olyan dokumentumok beszúrását, ahol az indexkulcs vagy kulcsok megegyeznek az indexben már meglévő értékkel. Egyedi index létrehozásához adja meg a true értéket. Az alapértelmezett érték false. |
név | string | Az index neve. Ha nincs megadva, a MongoDB az index nevét az indexelt mezők nevének és a rendezési sorrendnek az összekapcsolásával generálja. | sparse | Boolean | Ha igaz, az index csak a megadott mezővel rendelkező dokumentumokra hivatkozik. Ezek az indexek kevesebb helyet használnak, de bizonyos helyzetekben (különösen a rendezéseknél) másképp viselkednek. Az alapértelmezett érték false. |
expireAfterSeconds | integer | Megad egy értéket másodpercben, mint TTL-t, annak szabályozására, hogy a MongoDB meddig tartja meg a dokumentumokat ebben a gyűjteményben. |
súlyok | dokumentum | A súly egy 1 és 99,999 közötti szám, amely a mező jelentőségét jelöli a többi indexelt mezőhöz képest a pontszám szempontjából. |
default_language | string | Szövegindex esetén az a nyelv, amely meghatározza a stopszavak listáját, valamint a törzsképző és a tokenizáló szabályait. Az alapértelmezett érték az angol. |
language_override | string | Szövegindex esetében adja meg a dokumentum azon mezőjének nevét, amely tartalmazza az alapértelmezett nyelvet felülíró nyelvet. Az alapértelmezett érték a language. |
A dropIndex() metódus
A MongoDB dropIndex() metódusával törölhet egy adott indexet.
Szintaktika
A DropIndex() metódus alapvető szintaxisa a következő().
>db.COLLECTION_NAME.dropIndex({KEY:1})
Itt a kulcs annak a fájlnak a neve, amelyre indexet szeretnénk létrehozni, az 1 pedig a növekvő sorrendet jelenti. Ha csökkenő sorrendben szeretnénk indexet létrehozni, akkor a -1-et kell használni.
Példa
> db.mycol.dropIndex({"title":1}){"ok" : 0,"errmsg" : "can't find index with key: { title: 1.0 }","code" : 27,"codeName" : "IndexNotFound"}
A dropIndexes() metódus
Ez a metódus több (megadott) indexet töröl egy gyűjteményen.
Szintaxis
A DropIndexes() metódus alapvető szintaxisa a következő() –
>db.COLLECTION_NAME.dropIndexes()
Példa
Tegyük fel, hogy 2 indexet hoztunk létre a mycol nevű gyűjteményben az alábbiak szerint –
> db.mycol.createIndex({"title":1,"description":-1})
A következő példa eltávolítja a mycol fent létrehozott indexeit –
>db.mycol.dropIndexes({"title":1,"description":-1}){ "nIndexesWas" : 2, "ok" : 1 }>
A getIndexes() metódus
Ez a metódus visszaadja az összes index leírását a gyűjteményben.
Szintaxis
Az alábbiakban a getIndexes() metódus alapvető szintaxisát mutatjuk be –
db.COLLECTION_NAME.getIndexes()
Példa
Tegyük fel, hogy 2 indexet hoztunk létre a mycol névre keresztelt könyvben. gyűjteményt az alábbiak szerint –
> db.mycol.createIndex({"title":1,"description":-1})
A következő példa a mycol gyűjtemény összes indexét lekérdezi –
> db.mycol.getIndexes()>
.