Az indexek nagyon fontosak minden adatbázisban, és ez a MongoDB esetében sincs másképp. Az indexek használatával a lekérdezések végrehajtása a MongoDB-ben hatékonyabbá válik.

Ha lenne egy több ezer dokumentumot tartalmazó gyűjteményünk indexek nélkül, majd lekérdezéssel keresnénk bizonyos dokumentumokat, akkor ilyen esetben a MongoDB-nek az egész gyűjteményt át kellene vizsgálnia, hogy megtalálja a dokumentumokat. De ha lennének indexeid, akkor a MongoDB ezeket az indexeket használná arra, hogy korlátozza a gyűjteményben keresendő dokumentumok számát.

Az indexek olyan speciális adathalmazok, amelyek a gyűjtemény adatainak egy részleges részét tárolják. Mivel az adatok részlegesek, könnyebbé válik az adatok olvasása. Ez a részhalmaz egy adott mező vagy mezők egy halmazának értékét tárolja a mező értéke szerint rendezve.

Ebben a tananyagban megtanulja –

  • Az indexek hatásának megértése
  • Hogyan hozzon létre indexeket: createIndex()
  • Hogyan keressen indexeket: getindexes()
  • Hogyan törölje az indexeket: Dropindex()

Az indexek hatásának megértése

Most, bár a bevezetőben láttuk, hogy az indexek jót tesznek a lekérdezéseknek, de a túl sok index lassíthatja az egyéb műveleteket, például az Insert, Delete és Update műveletet.

Ha a dokumentumokon gyakran végeznek beillesztési, törlési és frissítési műveleteket, akkor az indexeknek is ilyen gyakran kellene változniuk, ami csak overhead lenne a gyűjtemény számára.

Az alábbi példa egy példát mutat arra, hogy milyen mezőértékek alkothatnak indexet egy gyűjteményben. Egy index alapulhat a gyűjtemény egyetlen mezőjén, vagy alapulhat a gyűjtemény több mezőjén is.

A lenti példában az Employeeid “1” és az EmployeeCode “AA” mezőt használjuk a gyűjteményben lévő dokumentumok indexelésére. Így a lekérdezéses keresés során ezek az indexek segítségével gyorsan és hatékonyan meg lehet találni a gyűjteményben a kívánt dokumentumokat.

Így még akkor is, ha a keresési lekérdezés az EmployeeCode “AA” alapján történik, ez a dokumentum fog visszakerülni.

Indexek létrehozása: createIndex()

Az index létrehozása a MongoDB-ben a “createIndex” metódus segítségével történik.

A következő példa azt mutatja, hogyan adjunk indexet a gyűjteményhez. Tegyük fel, hogy megvan ugyanaz az Employee gyűjteményünk, amelynek a Field nevei “Employeeid” és “EmployeeName”.

db.Employee.createIndex({Employeeid:1})

Kódmagyarázat:

  1. A createIndex metódus egy index létrehozására szolgál a dokumentum “Employeeid” mezője alapján.
  2. A ‘1’ paraméter azt jelzi, hogy az index létrehozásakor az “Employeeid” mező értékeit növekvő sorrendbe kell rendezni. Kérjük, vegye figyelembe, hogy ez eltér a _id mezőtől (Az id mezőt a gyűjteményben lévő egyes dokumentumok egyedi azonosítására használják), amelyet a MongoDB automatikusan hoz létre a gyűjteményben. A dokumentumok mostantól az Employeeid és nem az _id mező szerint lesznek rendezve.

A parancs sikeres végrehajtása esetén a következő kimenet jelenik meg:

Kimenet:

  1. A numIndexesBefore: 1 a mezőértékek számát jelzi (A gyűjteményben lévő tényleges mezők), amelyek a parancs futtatása előtt az indexekben voltak. Ne feledje, hogy minden gyűjteménynek van _id mezője, amely szintén Field értéknek számít az indexhez. Mivel az _id indexmező a gyűjtemény kezdeti létrehozásakor a gyűjtemény része, a numIndexesBefore értéke 1.
  2. A numIndexesAfter: 2 jelzi azoknak a mezőértékeknek a számát, amelyek a parancs futtatása után ott voltak az indexekben.
  3. Itt az “ok: 1” kimenet azt adja meg, hogy a művelet sikeres volt, és az új index hozzáadódik a gyűjteményhez.

A fenti kód azt mutatja, hogyan hozhatunk létre indexet egy mezőérték alapján, de több mezőérték alapján is létrehozhatunk indexet.

A következő példa mutatja, hogyan lehet ezt megtenni;

db.Employee.createIndex({Employeeid:1, EmployeeName:1])

Kódmagyarázat:

  1. A createIndex módszer mostantól figyelembe veszi a több mező értékét, ami mostantól az “Employeeid” és az “EmployeeName” alapján hozza létre az indexet. Az Employeeid:1 és EmployeeName:1 azt jelzi, hogy az indexet e két mezőérték alapján kell létrehozni, a :1 pedig azt, hogy növekvő sorrendben kell létrehozni.

Indexek keresése: getindexes()

Az index keresése a MongoDB-ben a “getIndexes” metódus segítségével történik.

Az alábbi példa mutatja, hogyan lehet ezt elvégezni;

db.Employee.getIndexes()

Kódmagyarázat:

  1. A getIndexes metódus egy gyűjtemény összes indexének megkeresésére szolgál.

A parancs sikeres végrehajtása esetén a következő kimenet jelenik meg:

Kimenet:

  1. A kimenet egy dokumentumot ad vissza, amely csak azt mutatja, hogy a gyűjteményben 2 index van, az egyik a _id mező, a másik pedig a Employee id mező. A :1 azt jelzi, hogy az indexben lévő mezőértékek növekvő sorrendben jönnek létre.

Indexek eltávolítása: dropindex()

A MongoDB-ben egy index eltávolítása a dropIndex metódus segítségével történik.

A következő példa mutatja, hogyan lehet ezt megtenni;

db.Employee.dropIndex(Employeeid:1)

Kódmagyarázat:

  1. A dropIndex metódus átveszi a szükséges Field értékeket, amelyeket el kell távolítani az Indexből.

A parancs sikeres végrehajtása esetén a következő kimenet jelenik meg:

Kimenet:

  1. Az nIndexesWas: 3 az indexekben a parancs futtatása előtt az indexekben lévő mezőértékek számát jelzi. Ne feledje, hogy minden gyűjteménynek van _id mezője, amely szintén Field értéknek számít az indexhez.
  2. Az ok: 1 kimenet azt adja meg, hogy a művelet sikeres volt, és az “Employeeid” mezőt eltávolítottuk az indexből.

A gyűjtemény összes indexének egyszerre történő eltávolításához használhatjuk a dropIndexes parancsot.

A következő példa mutatja, hogyan lehet ezt megtenni.

db.Employee.dropIndex()

Kódmagyarázat:

  1. A dropIndexes módszer a _id index kivételével minden indexet töröl.

A parancs sikeres végrehajtása esetén a következő kimenet jelenik meg:

Kimenet:

  1. Az nIndexesWas: 2 azt jelzi, hogy hány mezőérték volt az indexekben a parancs futtatása előtt.
  2. Még egyszer ne feledjük, hogy minden gyűjteménynek van _id mezője, ami szintén Field értéknek számít az indexhez, és ezt a MongoDB nem fogja eltávolítani, és ezt jelzi ez az üzenet.
  3. Az ok: 1 kimenet azt adja meg, hogy a művelet sikeres volt.

Summary

  • Az indexek meghatározása fontos a gyűjteményben lévő dokumentumok gyorsabb és hatékonyabb kereséséhez.
  • Az indexeket a createIndex metódussal hozhatjuk létre. Az indexek létrehozhatók egyetlen mezőre vagy több mező értékére is.
  • Az indexeket a getIndexes metódus segítségével lehet megtalálni.
  • Az indexek eltávolíthatók a dropIndex használatával az egyes indexek esetében vagy a dropIndexes metódussal az összes index eltávolításához.

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

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