Indeksai yra labai svarbūs bet kurioje duomenų bazėje, o naudojant „MongoDB“ tai niekuo nesiskiria. Naudojant indeksus, efektyviau vykdyti užklausas „MongoDB“.
Jei turėjote kolekciją su tūkstančiais dokumentų be indeksų ir tada ieškote tam tikrų dokumentų, tada tokiu atveju „MongoDB“ turėtų nuskaityti visą kolekciją, kad rastų dokumentus. Bet jei turėtumėte rodyklių, „MongoDB“ naudodama šias rodykles apribotų dokumentų, kurių reikėjo ieškoti kolekcijoje, skaičių.
Indeksai yra specialūs duomenų rinkiniai, kuriuose saugoma dalis kolekcijos duomenų. Kadangi duomenys yra daliniai, juos lengviau perskaityti. Šiame daliniame rinkinyje saugoma konkretaus lauko arba laukų rinkinio, sutvarkyto pagal lauko vertę, vertė.
Šioje pamokoje sužinosite -
- Indeksų poveikio supratimas
- Kaip sukurti indeksus: createIndex ()
- Kaip rasti indeksus: getindexes ()
- Kaip mesti indeksus: dropindex ()
Indeksų poveikio supratimas
Nors iš įvado matėme, kad indeksai yra tinkami užklausoms, tačiau turint per daug indeksų, galima sulėtinti kitas operacijas, tokias kaip įterpimas, ištrynimas ir atnaujinimas.
Jei dažnai atliekamos dokumentų įterpimo, ištrynimo ir atnaujinimo operacijos, indeksus tektų dažnai keisti, o tai būtų tiesiog kolekcijos pridėtinė vertė.
Žemiau pateiktame pavyzdyje pateikiamas pavyzdys, kokios lauko reikšmės gali sudaryti indeksą kolekcijoje. Indeksas gali būti pagrįstas tik vienu kolekcijos lauku arba keletu rinkinio laukų.
Toliau pateiktame pavyzdyje kolekcijos dokumentams indeksuoti naudojami „Employeeid“ „1“ ir „EmployeeCode“ „AA“. Taigi, atlikus užklausos paiešką, šios rodyklės bus naudojamos greitai ir efektyviai surasti reikalingus dokumentus kolekcijoje.
Taigi, net jei paieškos užklausa remiasi „EmployeeCode“ AA “, tas dokumentas bus grąžintas.
Kaip sukurti indeksus: createIndex ()
„ MongoDB “ indekso kūrimas atliekamas naudojant „ createIndex “ metodą.
Šis pavyzdys rodo, kaip pridėti indeksą prie kolekcijos. Tarkime, kad turime tą pačią „Employee“ kolekciją, kurios laukų pavadinimai yra „Employeeid“ ir „EmployeeName“.
db.Employee.createIndex({Employeeid:1})
Kodo paaiškinimas:
- „ CreateIndex“ metodas naudojamas indeksui sukurti pagal „Employeeid“ dokumentą.
- Parametras „1“ nurodo, kad kuriant indeksą su lauko „Employeeid“ reikšmėmis, jie turėtų būti rūšiuojami didėjančia tvarka. Atkreipkite dėmesį, kad tai skiriasi nuo lauko _id (laukas ID naudojamas unikaliai identifikuoti kiekvieną kolekcijos dokumentą), kurį „MongoDB“ automatiškai sukuria kolekcijoje. Dabar dokumentai bus rūšiuojami pagal „Employeeid“, o ne lauką „_id“.
Jei komanda sėkmingai vykdoma, bus rodoma ši išvestis:
Išvestis:
- NumIndexesBefore: 1 nurodo laukų reikšmių skaičių (faktinius kolekcijos laukus), kurios buvo rodyklėse prieš paleidžiant komandą. Atminkite, kad kiekvienoje kolekcijoje yra laukas _id, kuris taip pat skaičiuojamas kaip indekso lauko reikšmė. Kadangi indekso laukas _id yra kolekcijos dalis, kai jis buvo sukurtas, numIndexesBefore reikšmė yra 1.
- NumIndexesAfter: 2 nurodo laukų reikšmių, kurios buvo rodyklėse po komandos paleidimo, skaičių.
- Čia „ok: 1“ išvestis nurodo, kad operacija buvo sėkminga, ir naujas indeksas pridedamas prie kolekcijos.
Aukščiau pateiktas kodas parodo, kaip sukurti indeksą pagal vieną lauko vertę, tačiau taip pat galima sukurti indeksą, pagrįstą keliomis lauko reikšmėmis.
Šis pavyzdys parodo, kaip tai galima padaryti;
db.Employee.createIndex({Employeeid:1, EmployeeName:1])
Kodo paaiškinimas:
- Metodas „createIndex“ dabar atsižvelgia į kelias lauko reikšmes, dėl kurių indeksas bus sukurtas remiantis „Employeeid“ ir „EmployeeName“. „Employeeid: 1“ ir „EmployeeName“: 1 nurodo, kad indeksas turėtų būti sukurtas šiose 2 lauko reikšmėse: 1 nurodant, kad jis turėtų būti didėjimo tvarka.
Kaip rasti indeksus: getindexes ()
Rodyklė „MongoDB“ surandama naudojant „getIndexes“ metodą.
Šis pavyzdys parodo, kaip tai galima padaryti;
db.Employee.getIndexes()
Kodo paaiškinimas:
- „GetIndexes“ metodas naudojamas surasti visus indeksus kolekcijoje.
Jei komanda sėkmingai vykdoma, bus rodoma ši išvestis:
Išvestis:
- Išvestis pateikia dokumentą, kuris tik parodo, kad kolekcijoje yra 2 indeksai, kurie yra laukas _id, o kitas yra laukas Darbuotojo ID. : 1 rodo, kad indekso lauko reikšmės yra sukurtos didėjimo tvarka.
Kaip mesti indeksus: dropindex ()
Indeksas pašalinamas iš „MongoDB“ naudojant „dropIndex“ metodą.
Šis pavyzdys parodo, kaip tai galima padaryti;
db.Employee.dropIndex(Employeeid:1)
Kodo paaiškinimas:
- Metodas „dropIndex“ imasi būtinų laukų reikšmių, kurias reikia pašalinti iš indekso.
Jei komanda sėkmingai vykdoma, bus rodoma ši išvestis:
Išvestis:
- „NIndexesWas: 3“ nurodo laukų reikšmių, kurios buvo rodyklėse prieš paleidžiant komandą, skaičių. Atminkite, kad kiekvienoje kolekcijoje yra laukas _id, kuris taip pat skaičiuojamas kaip indekso lauko reikšmė.
- Išvestyje „Ok: 1“ nurodoma, kad operacija buvo sėkminga, o laukas „Employeeid“ pašalinamas iš indekso.
Norėdami pašalinti visas kolekcijos rodykles vienu metu, galite naudoti komandą dropIndexes.
Šis pavyzdys parodo, kaip tai galima padaryti.
db.Employee.dropIndex()
Kodo paaiškinimas:
- Metodas dropIndexes panaikins visus indeksus, išskyrus indeksą _id.
Jei komanda sėkmingai vykdoma, bus rodoma ši išvestis:
Išvestis:
- „NIndexesWas: 2“ nurodo laukų reikšmių, kurios buvo rodyklėse prieš paleidžiant komandą, skaičių.
- Dar kartą nepamirškite, kad kiekvienoje kolekcijoje yra laukas _id, kuris taip pat skaičiuojamas kaip indekso lauko reikšmė, o „MongoDB“ jo nepašalins ir tai rodo šis pranešimas.
- Išvestis „Ok: 1“ nurodo, kad operacija buvo sėkminga.
Santrauka
- Norint greičiau ir efektyviau ieškoti dokumentų kolekcijoje, svarbu apibrėžti rodykles.
- Indeksus galima sukurti naudojant metodą createIndex. Indeksus galima sukurti tik viename lauke arba keliose lauko reikšmėse.
- Indeksus galima rasti naudojant „getIndexes“ metodą.
- Indeksus galima pašalinti naudojant „dropIndex“ atskiriems indeksams arba „dropIndexes“, norint mesti visus indeksus.