MongoDB Indexeringshandledning – createIndex(), dropindex() Exempel
Index är mycket viktiga i vilken databas som helst, och med MongoDB det är inte annorlunda. Med hjälp av index, utföra frågor i MongoDB blir effektivare.
Om du hade en samling med tusentals dokument utan index och sedan frågar efter vissa dokument, då i så fall MongoDB skulle behöva skanna hela samlingen för att hitta dokumenten. Men om du hade index, MongoDB skulle använda dessa register 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 datan är partiell blir det lättare att läsa denna data. Denna deluppsättning lagrar värdet för ett specifikt fält eller en uppsättning fält sorterade efter fältets värde.
Förstå effekten av index
Nu även om vi från introduktionen har sett att index är bra för frågor, men att ha för många index kan sakta ner andra operationer såsom Infoga, Ta bort och Uppdatera operationen.
Om det ofta utförs insättnings-, raderings- och uppdateringsoperationer på dokument, skulle indexen behöva ändras så ofta, vilket bara skulle vara en overhead för insamlingen.
Exemplet nedan visar ett exempel på vilka fältvärden som kan utgöra ett index i en samling. Ett index kan antingen baseras på bara ett fält i samlingen, eller så kan det baseras på flera fält i samlingen.
I exemplet nedan används Anställds-ID "1" och Anställdskoden "AA" för att indexera dokumenten i samlingen. Så när en frågesökning görs kommer dessa index att användas för att snabbt och effektivt hitta de nödvändiga dokumenten i samlingen.
Så även om sökfrågan är baserad på EmployeeCode "AA", skulle det dokumentet returneras.
Hur man skapar index: createIndex()
Skapa ett index i MongoDB görs genom att använda "skapa index”Metod.
Följande exempel visar hur man lägger till index i samlingen. Låt oss anta att vi har samma anställningssamling som har fältnamnen "Anställd" och "Anställd".
db.Employee.createIndex({Employeeid:1})
Kodförklaring:
- Smakämnen skapa index Metoden används för att skapa ett index baserat på "Anställd" i dokumentet.
- Parametern '1' indikerar att när indexet skapas med fältvärdena för "Employeeid" ska de sorteras i stigande ordning. Observera att detta skiljer sig från fältet _id (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 och inte fältet _id.
Om kommandot utförs framgångsrikt kommer följande utdata att visas:
Produktion:
- numIndexBefore: 1 indikerar antalet fältvärden (De faktiska fälten i samlingen) 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. Eftersom indexfältet _id är en del av samlingen när det skapas, är värdet på numIndexBefore 1.
- numIndexAfter: 2 indikerar antalet fältvärden som fanns i indexen efter att kommandot kördes.
- Här anger "ok: 1"-utgången att operationen lyckades, och 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])
Kodförklaring:
- CreateIndex-metoden tar nu hänsyn till flera fältvärden som nu gör att indexet skapas baserat på "Employeeid" och "EmployeeName". Employeeid:1 och EmployeeName:1 indikerar 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()
Hitta ett index i MongoDB görs med hjälp av "getIndex" metod.
Följande exempel visar hur detta kan göras;
db.Employee.getIndexes()
Kodförklaring:
- Metoden getIndex används för att hitta alla index i en samling.
Om kommandot utförs framgångsrikt kommer följande utdata att visas:
Produktion:
- Utdata returnerar ett dokument som bara visar att det finns 2 index i samlingen som är _id-fältet, och det andra är fältet Employee id. :1 indikerar att fältvärdena i indexet skapas i stigande ordning.
Hur man släpper index: dropindex()
Ta bort ett index i MongoDB görs genom att använda dropIndex-metoden.
Följande exempel visar hur detta kan göras;
db.Employee.dropIndex(Employeeid:1)
Kodförklaring:
- DropIndex-metoden tar de nödvändiga fältvärdena som måste tas bort från indexet.
Om kommandot utförs framgångsrikt kommer följande utdata att visas:
Produktion:
- nIndexWas: 3 indikerar 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.
- Ok: 1-utgången anger att operationen lyckades och fältet "Anställd" tas bort från indexet.
För att ta bort alla index på en gång i samlingen kan man använda kommandot dropIndex.
Följande exempel visar hur detta kan göras.
db.Employee.dropIndex()
Kodförklaring:
- Metoden dropIndex kommer att ta bort alla index förutom _id-indexet.
Om kommandot utförs framgångsrikt kommer följande utdata att visas:
Produktion:
- nIndexWas: 2 indikerar 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, och som inte tas bort av MongoDB och det är vad detta meddelande indikerar.
- Ok: 1-utgången anger att operationen lyckades.
Sammanfattning
- Att definiera 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 flera fältvärden.
- Index kan hittas genom att använda getIndex-metoden.
- Index kan tas bort genom att använda dropIndex för enstaka index eller dropIndex för att ta bort alla index.