MongoDB Indeksering: createIndex() og dropIndex()
โก Smart oppsummering
MongoDB Indekser lagrer et ordnet delsett av feltene i en samling, slik at spรธrringer kan finne dokumenter uten รฅ skanne hver eneste post. Metodene createIndex, getIndexes og dropIndex bygger, viser og fjerner disse ytelseskritiske strukturene.

Hva er MongoDB Indekser?
Indekser er svรฆrt viktige i enhver database, og med MongoDB det er ikke annerledes. Ved bruk av indekser, utfรธre spรธrringer i MongoDB blir mer effektiv.
Hvis du hadde en samling med tusenvis av dokumenter uten indekser, og du deretter spรธr for รฅ finne bestemte dokumenter, sรฅ i et slikt tilfelle 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 delvis del av samlingens data. Siden dataene er delvise, blir det enklere รฅ lese disse dataene. Dette delvise settet lagrer verdien av et bestemt felt, eller et sett med felt, sortert etter verdien i feltet.
Forstรฅ virkningen av indekser
Selv om introduksjonen har vist at indekser er bra for spรธrringer, kan for mange indekser forsinke andre operasjoner, som for eksempel innsettings-, slettings- og oppdateringsoperasjonene.
Hvis det utfรธres hyppige innsettings-, slettings- og oppdateringsoperasjoner pรฅ dokumenter, mรฅ indeksene endres sรฅ ofte, noe som bare vil vรฆre en overhead for samlingen.
Eksemplet nedenfor viser 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 er ansatt-ID-en ยซ1ยป og ansattCode ยซAAยป brukes til รฅ indeksere dokumentene i samlingen. Sรฅ nรฅr et sรธ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รฅ den ansatteCode ยซAAยป, det dokumentet ville bli returnert.
Hvordan lage indekser: createIndex()
Opprette en indeks i MongoDB gjรธres ved รฅ bruke createIndex metoden.
Fรธlgende eksempel viser hvordan du legger til en indeks i en samling. La oss anta at vi har den samme Employee-samlingen, som har feltnavnene ยซEmployeeidยป og ยซEmployeeNameยป.
db.Employee.createIndex({Employeeid:1})
Code Forklaring:
- Ocuco createIndex metoden brukes til รฅ lage en indeks basert pรฅ "Ansatt" i dokumentet.
- Parameteren ยซ1ยป indikerer at nรฅr indeksen opprettes med verdiene i feltet ยซEmployeeidยป, skal de sorteres i stigende rekkefรธlge. Vรฆr oppmerksom pรฅ at dette er forskjellig fra _id-feltet (som unikt identifiserer hvert dokument) som MongoDB opprettes automatisk. Dokumentene vil nรฅ bli sortert i henhold til ansatt-ID og ikke _id-feltet.
Hvis kommandoen utfรธres, vil fรธlgende utdata vises:
Utgang:
- numIndexesBefore: 1 angir antall feltverdier i indeksene fรธr kommandoen ble kjรธrt. Hver samling har _id-feltet, som ogsรฅ teller som en feltverdi, sรฅ numIndexesBefore er 1.
- numIndexesAfter: 2 angir antall feltverdier i indeksene etter at kommandoen ble kjรธrt.
- Utdataene ยซok: 1ยป angir at operasjonen var vellykket, og den nye indeksen legges til i samlingen.
Koden ovenfor viser hvordan man oppretter en indeks basert pรฅ รฉn 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})
Metoden createIndex tar nรฅ hensyn til flere feltverdier, noe som fรธrer til at indeksen opprettes basert pรฅ ยซEmployeeidยป og ยซEmployeeNameยป. Employeeid:1 og EmployeeName:1 indikerer at indeksen skal opprettes pรฅ disse to feltverdiene, der :1 indikerer stigende rekkefรธlge. Dette er kjent som en sammensatt indeks.
Slik finner du indekser: getIndexes()
ร finne en indeks i MongoDB gjรธres ved รฅ bruke getIndekser metode. Fรธlgende eksempel viser hvordan dette kan gjรธres:
db.Employee.getIndexes()
GetIndex-metoden brukes til รฅ finne alle indeksene i en samling.
Hvis kommandoen utfรธres, vil fรธlgende utdata vises:
Utgang:
Utdataene returnerer et dokument som viser at det er to indekser i samlingen: _id-feltet og Employeeid-feltet. :1 indikerer at feltverdiene i indeksen er opprettet i stigende rekkefรธlge.
Slik fjerner du indekser: dropIndex()
Fjerne en indeks i MongoDB gjรธres ved รฅ bruke dropIndeks metode. Fรธlgende eksempel viser hvordan dette kan gjรธres:
db.Employee.dropIndex({Employeeid:1})
dropIndex-metoden tar de nรธdvendige feltverdiene som mรฅ fjernes fra indeksen.
Hvis kommandoen utfรธres, vil fรธlgende utdata vises:
Utgang:
- nIndexesWas: 3 angir antall feltverdier i indeksene fรธr kommandoen ble kjรธrt. Hver samling har _id-feltet, som ogsรฅ teller som en feltverdi.
- Ok: 1-utgangen spesifiserer at operasjonen var vellykket, og "Ansatt"-feltet fjernes fra indeksen.
For รฅ fjerne alle indeksene i samlingen samtidig, kan man bruke kommandoen dropIndexes. Fรธlgende eksempel viser hvordan dette kan gjรธres:
db.Employee.dropIndexes()
DropIndex-metoden vil slette alle indeksene bortsett fra _id-indeksen.
Hvis kommandoen utfรธres, vil fรธlgende utdata vises:
Utgang:
- nIndexesWas: 2 angir antall feltverdier i indeksene fรธr kommandoen ble kjรธrt.
- Hver samling har _id-feltet, som ogsรฅ teller som en feltverdi og ikke vil bli fjernet av MongoDB; det er det denne meldingen indikerer.
- Ok: 1-utgangen spesifiserer at operasjonen var vellykket.










