Index är mycket viktiga i alla databaser, och med MongoDB är det inte annorlunda. Med hjälp av index blir det effektivare att utföra frågor i MongoDB.

Om du har en samling med tusentals dokument utan index, och du sedan gör en förfrågan för att hitta vissa dokument, skulle MongoDB i ett sådant fall behöva skanna hela samlingen för att hitta dokumenten. Men om du hade index skulle MongoDB använda dessa index för att begränsa antalet dokument som måste sökas i samlingen.

Index är speciella datamängder som lagrar en del av samlingens data. Eftersom uppgifterna är partiella blir det lättare att läsa dessa uppgifter. Denna delmängd lagrar värdet av ett visst fält eller en uppsättning fält som är ordnade efter fältets värde.

I den här handledningen lär du dig –

  • Förståelse av indexens inverkan
  • Hur man skapar index: createIndex()
  • Hur man hittar index: getindexes()
  • Hur man släpper index: dropindex()

Förståelse för indexens påverkan

Nu har vi visserligen sett i inledningen att index är bra för frågor, men om man har för många index kan det sakta ner andra operationer, t.ex. insättning, borttagning och uppdatering.

Om det ofta utförs insättnings-, raderings- och uppdateringsoperationer på dokumenten skulle indexen behöva ändras så ofta, vilket bara skulle vara en overhead för samlingen.

Understående exempel visar ett exempel på vilka fältvärden som kan utgöra ett index i en samling. Ett index kan antingen baseras på endast ett fält i samlingen, eller så kan det baseras på flera fält i samlingen.

I exemplet nedan används Employeeid ”1” och EmployeeCode ”AA” för att indexera dokumenten i samlingen. När en sökning görs kommer dessa index att användas för att snabbt och effektivt hitta de önskade dokumenten i samlingen.

Så även om sökfrågan baseras på EmployeeCode ”AA” kommer det dokumentet att returneras.

Hur man skapar index: createIndex()

Skapa ett index i MongoDB görs genom att använda metoden ”createIndex”.

Följande exempel visar hur man lägger till index till en samling. Låt oss anta att vi har samma Employee collection som har fältnamnen ”Employeeid” och ”EmployeeName”.

db.Employee.createIndex({Employeeid:1})

Kodeförklaring:

  1. Metoden createIndex används för att skapa ett index baserat på dokumentets ”Employeeid”.
  2. Parametern ”1” anger att när indexet skapas med fältvärdena ”Employeeid” ska de sorteras i stigande ordning. Observera att detta skiljer sig från _id-fältet (id-fältet används för att unikt identifiera varje dokument i samlingen) som skapas automatiskt i samlingen av MongoDB. Dokumenten kommer nu att sorteras enligt Employeeid-fältet och inte _id-fältet.

Om kommandot utförs framgångsrikt visas följande utdata:

Output:

  1. The numIndexesBefore: 1 indicates the number of Field values (The actual fields in the collection) which were there in the indexes before the command was run. Kom ihåg att varje samling har fältet _id som också räknas som ett fältvärde i indexet. Eftersom indexfältet _id är en del av samlingen när den först skapas är värdet för numIndexesBefore 1.
  2. Det är numIndexesAfter: 2 anger antalet fältvärden som fanns i indexen efter att kommandot kördes.
  3. Här är ”ok: 1” anger att operationen lyckades och att det nya indexet läggs till i samlingen.

Ovanstående kod visar hur man skapar ett index baserat på ett fältvärde, men man kan också skapa ett index baserat på flera fältvärden.

Följande exempel visar hur detta kan göras;

db.Employee.createIndex({Employeeid:1, EmployeeName:1])

Kodeförklaring:

  1. Metoden createIndex tar nu hänsyn till flera fältvärden vilket gör att indexet nu skapas baserat på ”Employeeid” och ”EmployeeName”. Employeeid:1 och EmployeeName:1 anger att indexet ska skapas på dessa 2 fältvärden med :1 som anger att det ska vara i stigande ordning.

Hur man hittar index: getindexes()

För att hitta ett index i MongoDB används metoden ”getIndexes”.

Följande exempel visar hur detta kan göras;

db.Employee.getIndexes()

Code Explanation:

  1. Metoden getIndexes används för att hitta alla index i en samling.

Om kommandot utförs framgångsrikt visas följande utdata:

Output:

  1. Utmatningen returnerar ett dokument som bara visar att det finns 2 index i samlingen vilket är fältet _id och det andra är fältet Employee id. :1 indikerar att fältvärdena i indexet skapas i stigande ordning.

Hur man tar bort index: dropindex()

Hitta ett index i MongoDB genom att använda metoden dropIndex.

Följande exempel visar hur detta kan göras;

db.Employee.dropIndex(Employeeid:1)

Kodeförklaring:

  1. Metoden dropIndex tar emot de fältvärden som krävs och som ska tas bort från indexet.

Om kommandot utförs framgångsrikt visas följande utdata:

Output:

  1. NIndexesWas: 3 anger antalet fältvärden som fanns i indexen innan kommandot kördes. Kom ihåg att varje samling har fältet _id som också räknas som ett fältvärde i indexet.
  2. Den ok: 1 anger att operationen lyckades och att fältet ”Employeeid” tas bort från indexet.

För att ta bort alla index på en gång i samlingen kan man använda kommandot dropIndexes.

Följande exempel visar hur detta kan göras.

db.Employee.dropIndex()

Kodeförklaring:

  1. Med metoden dropIndexes släpps alla index utom indexet _id.

Om kommandot utförs framgångsrikt visas följande utdata:

Output:

  1. NIndexesWas: 2 anger antalet fältvärden som fanns i indexen innan kommandot kördes.
  2. Håll igen att varje samling har fältet _id som också räknas som ett Field-värde till indexet, och det kommer inte att tas bort av MongoDB och det är vad detta meddelande indikerar.
  3. Den ok: 1 anger att operationen lyckades.

Sammanfattning

  • Definiering av index är viktigt för snabbare och effektiv sökning av dokument i en samling.
  • Index kan skapas genom att använda metoden createIndex. Index kan skapas på bara ett fält eller på flera fältvärden.
  • Index kan hittas med hjälp av getIndexes-metoden.
  • Index kan tas bort med hjälp av dropIndex för enskilda index eller dropIndexes för att ta bort alla index.

Lämna ett svar

Din e-postadress kommer inte publiceras.