MongoDB Indexelés: createIndex() és dropIndex()
⚡ Okos összefoglaló
MongoDB Az indexek egy gyűjtemény mezőinek rendezett részhalmazát tárolják, így a lekérdezések minden rekord beolvasása nélkül megtalálhatják a dokumentumokat. A createIndex, getIndexes és dropIndex metódusok felépítik, listázzák és eltávolítják ezeket a teljesítménykritikus struktúrákat.

Mik MongoDB Indexek?
Az indexek nagyon fontosak minden adatbázisban, és azzal együtt MongoDB ez nem másképp van. Indexek használatával a lekérdezések végrehajtása MongoDB hatékonyabbá válik.
Ha lenne egy több ezer dokumentumból álló gyűjteményed indexek nélkül, és lekérdezéssel keresel meg bizonyos dokumentumokat, akkor ilyen esetben MongoDB át kell szkennelni a teljes gyűjteményt a dokumentumok megtalálásához. De ha lennének indexei, MongoDB ezekkel az indexekkel korlátozza a gyűjteményben keresendő dokumentumok számát.
Az indexek speciális adathalmazok, amelyek a gyűjtemény adatainak részleges részét tárolják. Mivel az adatok részlegesek, könnyebben olvashatók. Ez a részleges halmaz egy adott mező vagy mezők egy halmazának értékét tárolja, a mező értéke szerint rendezve.
Az indexek hatásának megértése
Habár a bevezetésből kiderült, hogy az indexek jók lekérdezésekhez, a túl sok index lelassíthatja más műveleteket, például a Beszúrás, Törlés és Frissítés műveleteket.
Ha gyakran hajtanak végre beszúrási, törlési és frissítési műveleteket a dokumentumokon, akkor az indexeknek is ilyen gyakran kellene változniuk, ami csak többletterhelést jelentene a gyűjtemény számára.
Az alábbi példa bemutatja, hogy mely mezőértékek alkothatnak indexet egy gyűjteményben. Egy index alapulhat a gyűjtemény egyetlen mezőjén, vagy több mezőjén is.
Az alábbi példában az Alkalmazotti azonosító „1” és az AlkalmazottCode Az „AA” indexeket a gyűjteményben található dokumentumok indexelésére használják. Tehát amikor lekérdezést keresnek, ezeket az indexeket használják a szükséges dokumentumok gyors és hatékony megtalálására a gyűjteményben.
Tehát még ha a keresési lekérdezés az Alkalmazotton alapul isCode „AA”, akkor a dokumentum visszakerülne.
Hogyan készítsünk indexeket: createIndex()
Index létrehozása a következőben: MongoDB segítségével történik CreateIndex módszer.
A következő példa bemutatja, hogyan adhatunk hozzá indexet egy gyűjteményhez. Tegyük fel, hogy van egy ugyanilyen Alkalmazott gyűjteményünk, amelynek mezőnevei „Alkalmazottazonosító” és „Alkalmazottnév”.
db.Employee.createIndex({Employeeid:1})
Code Magyarázat:
- Az CreateIndex módszerrel hozunk létre egy indexet a dokumentum „Alkalmazottai” alapján.
- Az „1” paraméter azt jelzi, hogy amikor az indexet az „Employeeid” mező értékeivel hozzuk létre, azokat növekvő sorrendbe kell rendezni. Kérjük, vegye figyelembe, hogy ez eltér az _id mezőtől (amely egyedileg azonosítja az egyes dokumentumokat), amely MongoDB automatikusan létrehozza. A dokumentumok mostantól az Alkalmazotti azonosító, és nem az _id mező szerint lesznek rendezve.
Ha a parancs végrehajtása sikeres, a következő kimenet jelenik meg:
output:
- A numIndexesBefore: 1 a parancs futtatása előtti indexekben lévő mezőértékek számát jelzi. Minden gyűjtemény tartalmazza az _id mezőt, amely szintén mezőértéknek számít, tehát a numIndexesBefore értéke 1.
- A numIndexesAfter: 2 a parancs futtatása utáni indexekben lévő mezőértékek számát jelzi.
- Az „ok: 1” kimenet azt jelzi, hogy a művelet sikeres volt, és az új index hozzáadódott a gyűjteményhez.
A fenti kód bemutatja, 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 bemutatja, hogyan lehet ezt megtenni:
db.Employee.createIndex({Employeeid:1, EmployeeName:1})
A createIndex metódus mostantól több mezőértéket is figyelembe vesz, aminek következtében az index az „Employeeid” és az „EmployeeName” alapján jön létre. Az Employeeid:1 és az EmployeeName:1 azt jelzi, hogy az indexet ezen a két mezőértéken kell létrehozni, ahol az :1 a növekvő sorrendet jelöli. Ezt összetett indexnek nevezzük.
Indexek keresése: getIndexes()
Index keresése MongoDB segítségével történik getIndexes metódus. A következő példa bemutatja, hogyan lehet ezt megtenni:
db.Employee.getIndexes()
A getIndexes metódus a gyűjtemény összes indexének megkeresésére szolgál.
Ha a parancs végrehajtása sikeres, a következő kimenet jelenik meg:
output:
A kimenet egy dokumentumot ad vissza, amely azt mutatja, hogy a gyűjteményben két index található: az _id mező és az Employeeid mező. Az :1 azt jelzi, hogy az indexben lévő mezőértékek növekvő sorrendben jönnek létre.
Indexek törlése: dropIndex()
Index eltávolítása a következőből: MongoDB segítségével történik dropIndex metódus. A következő példa bemutatja, hogyan lehet ezt megtenni:
db.Employee.dropIndex({Employeeid:1})
A dropIndex metódus a kötelező mezőértékeket veszi át, amelyeket el kell távolítani az indexből.
Ha a parancs végrehajtása sikeres, a következő kimenet jelenik meg:
output:
- Az nIndexesWas: 3 a parancs futtatása előtti indexekben lévő mezőértékek számát jelzi. Minden gyűjtemény rendelkezik az _id mezővel, amely szintén mezőértéknek számít.
- Az ok: 1 kimenet azt jelzi, hogy a művelet sikeres volt, és az „Employeeeid” mező eltávolításra kerül az indexből.
A gyűjtemény összes indexének egyidejű eltávolításához használhatjuk a dropIndexes parancsot. A következő példa bemutatja, hogyan lehet ezt megtenni:
db.Employee.dropIndexes()
A dropIndexes metódus eldobja az összes indexet, kivéve az _id indexet.
Ha a parancs végrehajtása sikeres, a következő kimenet jelenik meg:
output:
- Az nIndexesWas: 2 a parancs futtatása előtti indexekben lévő mezőértékek számát jelzi.
- Minden gyűjtemény rendelkezik az _id mezővel, amely szintén mezőértéknek számít, és nem kerül eltávolításra a következővel: MongoDB; erre utal ez az üzenet.
- Az ok: 1 kimenet azt jelzi, hogy a művelet sikeres volt.










