Indekser er veldig viktige i enhver database, og med MongoDB er det ikke annerledes. Ved bruk av indekser blir det mer effektivt å utføre spørsmål i MongoDB.
Hvis du hadde en samling med tusenvis av dokumenter uten indekser, og du spør etter å finne bestemte dokumenter, vil MongoDB i slike tilfeller trenge å skanne hele samlingen for å finne dokumentene. Men hvis du hadde indekser, ville MongoDB bruke disse indeksene for å begrense antall dokumenter som måtte søkes i samlingen.
Indekser er spesielle datasett som lagrer en del av samlingens data. Siden dataene er delvis, blir det lettere å lese disse dataene. Dette delsettet lagrer verdien til et bestemt felt eller et sett med felt ordnet etter verdien av feltet.
I denne opplæringen lærer du -
- Forståelse av indeksers innvirkning
- Hvordan lage indekser: createIndex ()
- Slik finner du indekser: getindexes ()
- Slik slipper du indekser: dropindex ()
Forståelse av indeksers innvirkning
Nå selv om vi fra introduksjonen har sett at indekser er bra for spørsmål, men å ha for mange indekser kan redusere andre operasjoner, for eksempel innsett, slett og oppdater.
Hvis det er hyppige innsettings-, slettings- og oppdateringsoperasjoner utført på dokumenter, må indeksene endres ofte, noe som bare vil være en overhead for samlingen.
Eksemplet nedenfor viser et eksempel på hvilke feltverdier som kan utgjøre en indeks i en samling. En indeks kan enten være basert på bare ett felt i samlingen, eller den kan være basert på flere felt i samlingen.
I eksemplet nedenfor brukes Employeeid "1" og EmployeeCode "AA" til å indeksere dokumentene i samlingen. Så når det blir gjort et søkesøk, vil disse indeksene brukes til å raskt og effektivt finne de nødvendige dokumentene i samlingen.
Så selv om søket er basert på EmployeeCode "AA", vil dokumentet bli returnert.
Hvordan lage indekser: createIndex ()
Å lage en indeks i MongoDB gjøres ved å bruke " createIndex " -metoden.
Følgende eksempel viser hvordan du legger til indeks i samlingen. La oss anta at vi har den samme ansattesamlingen som har feltnavnene "Employeeid" og "EmployeeName".
db.Employee.createIndex({Employeeid:1})
Kode Forklaring:
- Den createIndex metoden brukes for å lage en indeks basert på "EmployeeID" av dokumentet.
- Parameteren '1' indikerer at når indeksen blir opprettet med feltverdiene "Ansattid", skal de sorteres i stigende rekkefølge. Vær oppmerksom på at dette er forskjellig fra _id-feltet (ID-feltet brukes til å identifisere hvert dokument i samlingen på en unik måte) som opprettes automatisk i samlingen av MongoDB. Dokumentene blir nå sortert i henhold til Employeeid og ikke _id-feltet.
Hvis kommandoen er utført vellykket, vil følgende utdata vises:
Produksjon:
- NumIndexesBefore: 1 indikerer antall feltverdier (de faktiske feltene i samlingen) som var der i indeksene før kommandoen ble kjørt. Husk at hver samling har _id-feltet som også teller som en feltverdi til indeksen. Siden _id indeksfeltet er en del av samlingen når den opprinnelig ble opprettet, er verdien av numIndexesBefore 1.
- NumIndexesAfter: 2 angir antall feltverdier som var der i indeksene etter at kommandoen ble kjørt.
- Her angir "ok: 1" -utgangen at operasjonen var vellykket, og den nye indeksen er lagt til i samlingen.
Ovennevnte kode viser hvordan du oppretter en indeks basert på en feltverdi, men man kan også opprette en indeks basert på flere feltverdier.
Følgende eksempel viser hvordan dette kan gjøres;
db.Employee.createIndex({Employeeid:1, EmployeeName:1])
Kode Forklaring:
- CreateIndex-metoden tar nå hensyn til flere feltverdier som nå vil føre til at indeksen blir opprettet basert på "Employeeid" og "EmployeeName". Employeeid: 1 og EmployeeName: 1 indikerer at indeksen skal opprettes på disse 2 feltverdiene med: 1 som indikerer at den skal være i stigende rekkefølge.
Slik finner du indekser: getindexes ()
Å finne en indeks i MongoDB gjøres ved å bruke "getIndexes" -metoden.
Følgende eksempel viser hvordan dette kan gjøres;
db.Employee.getIndexes()
Kode Forklaring:
- GetIndexes-metoden brukes til å finne alle indeksene i en samling.
Hvis kommandoen er utført vellykket, vil følgende utdata vises:
Produksjon:
- Utgangen returnerer et dokument som bare viser at det er to indekser i samlingen som er _id-feltet, og den andre er ansatt-id-feltet. : 1 indikerer at feltverdiene i indeksen er opprettet i stigende rekkefølge.
Slik slipper du indekser: dropindex ()
Fjerne en indeks i MongoDB gjøres ved å bruke dropIndex-metoden.
Følgende eksempel viser hvordan dette kan gjøres;
db.Employee.dropIndex(Employeeid:1)
Kode Forklaring:
- DropIndex-metoden tar de nødvendige feltverdiene som må fjernes fra indeksen.
Hvis kommandoen er utført vellykket, vil følgende utdata vises:
Produksjon:
- NIndexesWas: 3 indikerer antall feltverdier som var der i indeksene før kommandoen ble kjørt. Husk at hver samling har _id-feltet som også teller som en feltverdi til indeksen.
- OK: 1-utdata spesifiserer at operasjonen var vellykket, og "Employeeid" -feltet fjernes fra indeksen.
For å fjerne alle indeksene samtidig i samlingen, kan man bruke kommandoen dropIndexes.
Følgende eksempel viser hvordan dette kan gjøres.
db.Employee.dropIndex()
Kode Forklaring:
- DropIndexes-metoden vil slippe alle indeksene bortsett fra _id-indeksen.
Hvis kommandoen er utført vellykket, vil følgende utdata vises:
Produksjon:
- NIndexesWas: 2 indikerer antall feltverdier som var der i indeksene før kommandoen ble kjørt.
- Husk igjen at hver samling har _id-feltet som også teller som en feltverdi til indeksen, og som ikke vil bli fjernet av MongoDB, og det er det denne meldingen indikerer.
- OK: 1-utdata spesifiserer at operasjonen var vellykket.
Sammendrag
- Å definere indekser er viktig for raskere og effektiv søk av dokumenter i en samling.
- Indekser kan opprettes ved hjelp av createIndex-metoden. Indekser kan opprettes på bare ett felt eller flere feltverdier.
- Indekser finner du ved å bruke getIndexes-metoden.
- Indekser kan fjernes ved å bruke dropIndex for enkeltindekser eller dropIndexes for å slippe alle indekser.