MongoDB indekseringsveiledning - createIndex (), dropindex () Eksempel

Innholdsfortegnelse:

Anonim

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:

  1. Den createIndex metoden brukes for å lage en indeks basert på "EmployeeID" av dokumentet.
  2. 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:

  1. 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.
  2. NumIndexesAfter: 2 angir antall feltverdier som var der i indeksene etter at kommandoen ble kjørt.
  3. 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:

  1. 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:

  1. GetIndexes-metoden brukes til å finne alle indeksene i en samling.

Hvis kommandoen er utført vellykket, vil følgende utdata vises:

Produksjon:

  1. 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:

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

Hvis kommandoen er utført vellykket, vil følgende utdata vises:

Produksjon:

  1. 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.
  2. 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:

  1. DropIndexes-metoden vil slippe alle indeksene bortsett fra _id-indeksen.

Hvis kommandoen er utført vellykket, vil følgende utdata vises:

Produksjon:

  1. NIndexesWas: 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 vil bli fjernet av MongoDB, og det er det denne meldingen indikerer.
  3. 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.