Index stöder effektiv lösning av frågor. Utan index måste MongoDB skanna varje dokument i en samling för att välja de dokument som matchar frågeuppgiften. Denna skanning är mycket ineffektiv och kräver att MongoDB behandlar en stor mängd data.
Index är särskilda datastrukturer som lagrar en liten del av datamängden i en form som är lätt att gå igenom. Indexet lagrar värdet av ett specifikt fält eller en uppsättning fält, ordnat efter värdet av fältet som anges i indexet.
Metoden createIndex()
För att skapa ett index måste du använda metoden createIndex() i MongoDB.
Syntax
Den grundläggande syntaxen för metoden createIndex() är följande().
>db.COLLECTION_NAME.createIndex({KEY:1})
Här är key namnet på det fält som du vill skapa index på och 1 står för stigande ordning. För att skapa index i fallande ordning måste du använda -1.
Exempel
>db.mycol.createIndex({"title":1}){"createdCollectionAutomatically" : false,"numIndexesBefore" : 1,"numIndexesAfter" : 2,"ok" : 1}>
I metoden createIndex() kan du skicka flera fält för att skapa index på flera fält.
>db.mycol.createIndex({"title":1,"description":-1})>
Metoden accepterar också en lista med alternativ (som är valfria). Följande är listan –
Parameter | Typ | Beskrivning |
---|---|---|
background | Boolean | Bygger indexet i bakgrunden så att byggandet av ett index inte blockerar andra databasaktiviteter. Ange true för att bygga i bakgrunden. Standardvärdet är false. |
unique | Boolean | Skapar ett unikt index så att samlingen inte accepterar insättning av dokument där indexnyckeln eller -nycklarna matchar ett befintligt värde i indexet. Ange true för att skapa ett unikt index. Standardvärdet är false. |
name | string | Namnet på indexet. Om det inte anges genererar MongoDB ett indexnamn genom att sammanfoga namnen på de indexerade fälten och sorteringsordningen. | sparse | Boolean | Om det är sant hänvisar indexet endast till dokument med det angivna fältet. Dessa index använder mindre utrymme men beter sig annorlunda i vissa situationer (särskilt sortering). Standardvärdet är false. |
expireAfterSeconds | integer | Anger ett värde, i sekunder, som TTL för att styra hur länge MongoDB behåller dokument i den här samlingen. |
vikter | dokument | Vikten är ett tal som sträcker sig från 1 till 99 999 och anger fältets betydelse i förhållande till de andra indexerade fälten när det gäller poängen. |
default_language | string | För ett textindex, det språk som bestämmer listan över stoppord och reglerna för stemmer och tokenizer. Standardvärdet är engelska. |
language_override | string | För ett textindex, ange namnet på det fält i dokumentet som innehåller, språket för att åsidosätta standardspråket. Standardvärdet är language. |
The dropIndex() method
Du kan släppa ett visst index med hjälp av metoden dropIndex() i MongoDB.
Syntax
Den grundläggande syntaxen för metoden DropIndex() är följande().
>db.COLLECTION_NAME.dropIndex({KEY:1})
Här är key namnet på den fil som du vill skapa index på och 1 är för stigande ordning. För att skapa index i fallande ordning måste du använda -1.
Exempel
> db.mycol.dropIndex({"title":1}){"ok" : 0,"errmsg" : "can't find index with key: { title: 1.0 }","code" : 27,"codeName" : "IndexNotFound"}
Metoden DropIndexes()
Denna metod tar bort flera (angivna) index på en samling.
Syntax
Den grundläggande syntaxen för metoden DropIndexes() är följande() –
>db.COLLECTION_NAME.dropIndexes()
Exempel
Antag att vi har skapat två index i den namngivna samlingen mycol enligt nedan. –
> db.mycol.createIndex({"title":1,"description":-1})
Följande exempel tar bort de ovan skapade indexen i mycol –
>db.mycol.dropIndexes({"title":1,"description":-1}){ "nIndexesWas" : 2, "ok" : 1 }>
Metoden getIndexes()
Denna metod returnerar beskrivningen av alla index i samlingen.
Syntax
Följande är den grundläggande syntaxen för metoden getIndexes() –
db.COLLECTION_NAME.getIndexes()
Exempel
Anta att vi har skapat 2 index i den namngivna mycol som visas nedan –
> db.mycol.createIndex({"title":1,"description":-1})
Följande exempel hämtar alla index i samlingen mycol –
> db.mycol.getIndexes()>