MongoDB – Indexelés

Hirdetések

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()>
Hirdetések

.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.