Indekser understøtter en effektiv løsning af forespørgsler. Uden indekser skal MongoDB scanne hvert dokument i en samling for at vælge de dokumenter, der passer til forespørgselsanvisningen. Denne scanning er meget ineffektiv og kræver, at MongoDB behandler en stor datamængde.
Indekser er særlige datastrukturer, der gemmer en lille del af datasættet i en form, der er let at gennemskue. Indekset gemmer værdien af et bestemt felt eller et sæt af felter, ordnet efter værdien af feltet som angivet i indekset.
Metoden createIndex()
For at oprette et indeks skal du bruge metoden createIndex() i MongoDB.
Syntaks
Den grundlæggende syntaks for createIndex()-metoden er som følger().
>db.COLLECTION_NAME.createIndex({KEY:1})
Her er key navnet på det felt, som du ønsker at oprette indeks på, og 1 er for stigende rækkefølge. Hvis du vil oprette indeks i faldende rækkefølge, skal du bruge -1.
Eksempel
>db.mycol.createIndex({"title":1}){"createdCollectionAutomatically" : false,"numIndexesBefore" : 1,"numIndexesAfter" : 2,"ok" : 1}>
I metoden createIndex() kan du videregive flere felter for at oprette indeks på flere felter.
>db.mycol.createIndex({"title":1,"description":-1})>
Denne metode accepterer også en liste over valgmuligheder (som er valgfrie). Følgende er listen –
Parameter | Type | Beskrivelse | |
---|---|---|---|
background | Boolean | Bygger indekset i baggrunden, så opbygningen af et indeks ikke blokerer for andre databaseaktiviteter. Angiv true for at opbygge i baggrunden. Standardværdien er false. | |
unique | Boolean | Opret et unikt indeks, så samlingen ikke accepterer indsættelse af dokumenter, hvor indeksnøglen eller -nøglerne svarer til en eksisterende værdi i indekset. Angiv true for at oprette et unikt indeks. Standardværdien er false. | |
name | string | Navnet på indekset. Hvis det ikke er angivet, genererer MongoDB et indeksnavn ved at sammenkæde navnene på de indekserede felter og sorteringsrækkefølgen. | sparse | Boolean | Hvis det er sandt, henviser indekset kun til dokumenter med det angivne felt. Disse indekser bruger mindre plads, men opfører sig anderledes i nogle situationer (især sortering). Standardværdien er false. |
expireAfterSeconds | integer | Angiver en værdi i sekunder som en TTL for at styre, hvor længe MongoDB beholder dokumenter i denne samling. | |
vægt | dokument | Vægten er et tal fra 1 til 99.999 og angiver feltets betydning i forhold til de andre indekserede felter med hensyn til pointen. | |
default_language | string | For et tekstindeks, det sprog, der bestemmer listen over stopord og reglerne for stemmer og tokenizer. Standardværdien er engelsk. | |
language_override | string | Angiv for et tekstindeks navnet på det felt i dokumentet, der indeholder, det sprog, der skal tilsidesætte standardsproget. Standardværdien er language. |
DropIndex()-metoden
Du kan droppe et bestemt indeks ved hjælp af dropIndex()-metoden i MongoDB.
Syntaks
Den grundlæggende syntaks for DropIndex()-metoden er som følger().
>db.COLLECTION_NAME.dropIndex({KEY:1})
Her er key navnet på den fil, som du ønsker at oprette indeks på, og 1 er for stigende rækkefølge. Hvis du vil oprette indeks i faldende rækkefølge, skal du bruge -1.
Eksempel
> db.mycol.dropIndex({"title":1}){"ok" : 0,"errmsg" : "can't find index with key: { title: 1.0 }","code" : 27,"codeName" : "IndexNotFound"}
DropIndexes() metoden
Denne metode sletter flere (angivne) indekser på en samling.
Syntaks
Den grundlæggende syntaks for DropIndexes()-metoden er som følger() –
>db.COLLECTION_NAME.dropIndexes()
Eksempel
Antag, at vi har oprettet 2 indekser i den navngivne mycol-samling som vist nedenfor –
> db.mycol.createIndex({"title":1,"description":-1})
Følgende eksempel fjerner de ovenfor oprettede indekser i mycol –
>db.mycol.dropIndexes({"title":1,"description":-1}){ "nIndexesWas" : 2, "ok" : 1 }>
Metoden getIndexes()
Denne metode returnerer beskrivelsen af alle indekser i samlingen.
Syntaks
Følgende er den grundlæggende syntaks for getIndexes()-metoden –
db.COLLECTION_NAME.getIndexes()
Eksempel
Antag, at vi har oprettet 2 indekser i mycol samling som vist nedenfor –
> db.mycol.createIndex({"title":1,"description":-1})
Følgende eksempel henter alle indekser i samlingen mycol –
> db.mycol.getIndexes()>