MongoDB Indekseringsveiledning – createIndex(), dropindex() Eksempel

Indekser er svært viktige i enhver database, og med MongoDB det er ikke annerledes. Med bruk av indekser, utfører søk i MongoDB blir mer effektiv.

Hvis du hadde en samling med tusenvis av dokumenter uten indekser, og du spør etter bestemte dokumenter, så i slike tilfeller MongoDB må skanne hele samlingen for å finne dokumentene. Men hvis du hadde indekser, MongoDB ville 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 delvise, blir det lettere å lese disse dataene. Dette delvise settet lagrer verdien til et spesifikt felt eller et sett med felt sortert etter feltets verdi.

Forstå virkningen av indekser

Nå selv om vi fra introduksjonen har sett at indekser er bra for spørringer, men å ha for mange indekser kan bremse andre operasjoner som Insert, Delete og Update-operasjonen.

Hvis det er hyppige innsettings-, slettings- og oppdateringsoperasjoner som utføres på dokumenter, må indeksene endre det 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 Employee-ID "1" og EmployeeCode "AA" for å indeksere dokumentene i samlingen. Så når et spørringssøk gjøres, vil disse indeksene bli brukt til raskt og effektivt å finne de nødvendige dokumentene i samlingen.

Så selv om søket er basert på EmployeeCode "AA", vil det dokumentet bli returnert.

Forstå virkningen av indekser

Hvordan lage indekser: createIndex()

Opprette 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 vår samme ansattsamling som har feltnavnene "Ansatt-ID" og "Ansattnavn".

Opprett indekser: createIndex()

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

Kodeforklaring:

  1. Ocuco createIndex metoden brukes til å lage en indeks basert på "Ansatt" i dokumentet.
  2. '1'-parameteren indikerer at når indeksen er opprettet med «Employeeid»-feltverdiene, 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) som opprettes automatisk i samlingen av MongoDB. Dokumentene vil nå sorteres i henhold til Ansatt og ikke _id-feltet.

Hvis kommandoen utføres vellykket, vil følgende utgang vises:

Utgang:

Opprett indekser: createIndex()

  1. numIndexBefore: 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 det først opprettes, er verdien av numIndexBefore 1.
  2. numIndexAfter: 2 indikerer antall feltverdier som var der i indeksene etter at kommandoen ble kjørt.
  3. Her spesifiserer "ok: 1"-utgangen at operasjonen var vellykket, og den nye indeksen legges til samlingen.

Koden ovenfor viser hvordan man lager en indeks basert på én feltverdi, men man kan også lage en indeks basert på flere feltverdier.

Følgende eksempel viser hvordan dette kan gjøres;

Opprett indekser: createIndex()

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

Kodeforklaring:

  • 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.

Hvordan finne indekser: getindexes()

Finne en indeks i MongoDB gjøres ved å bruke "getIndexer" metoden.

Følgende eksempel viser hvordan dette kan gjøres;

Finn indekser: getindexes()

db.Employee.getIndexes()

Kodeforklaring:

  • GetIndex-metoden brukes til å finne alle indeksene i en samling.

Hvis kommandoen utføres vellykket, vil følgende utgang vises:

Utgang:

Finn indekser: getindexes()

  • Utdataene returnerer et dokument som bare viser at det er 2 indekser i samlingen som er _id-feltet, og den andre er Employee id-feltet. :1 indikerer at feltverdiene i indeksen er opprettet i stigende rekkefølge.

Slik dropper du indekser: dropindex()

Fjerne en indeks i MongoDB gjøres ved å bruke dropIndex-metoden.

Følgende eksempel viser hvordan dette kan gjøres;

Drop Indexes: dropindex()

db.Employee.dropIndex(Employeeid:1)

Kodeforklaring:

  • DropIndex-metoden tar de nødvendige feltverdiene som må fjernes fra indeksen.

Hvis kommandoen utføres vellykket, vil følgende utgang vises:

Utgang:

Drop Indexes: dropindex()

  1. nIndexWas: 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.
  2. Ok: 1-utgangen spesifiserer at operasjonen var vellykket, og "Ansatt"-feltet fjernes fra indeksen.

For å fjerne alle indeksene på en gang i samlingen, kan man bruke dropIndex-kommandoen.

Følgende eksempel viser hvordan dette kan gjøres.

Drop Indexes: dropindex()

db.Employee.dropIndex()

Kodeforklaring:

  • DropIndex-metoden vil slette alle indeksene bortsett fra _id-indeksen.

Hvis kommandoen utføres vellykket, vil følgende utgang vises:

Utgang:

Drop Indexes: dropindex()

  1. nIndexWas: 2 indikerer antall feltverdier som var der i indeksene før kommandoen ble kjørt.
  2. Husk igjen at hver samling har _id-feltet som også teller som en feltverdi til indeksen, og som ikke fjernes av MongoDB og det er det denne meldingen indikerer.
  3. Ok: 1-utgangen spesifiserer at operasjonen var vellykket.

Sammendrag

  • Å definere indekser er viktig for raskere og effektiv søking av dokumenter i en samling.
  • Indekser kan opprettes ved å bruke createIndex-metoden. Indekser kan opprettes på bare ett felt eller flere feltverdier.
  • Indekser kan bli funnet ved å bruke getIndex-metoden.
  • Indekser kan fjernes ved å bruke dropIndex for enkeltindekser eller dropIndex for å droppe alle indekser.

Oppsummer dette innlegget med: