MongoDB – Indexering

Advertisements

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()>
Advertisements

Lämna ett svar

Din e-postadress kommer inte publiceras.