MongoDB Indexing Tutorial - createIndex (), dropindex () Exempel

Innehållsförteckning:

Anonim

Index är mycket viktiga i vilken databas som helst, och med MongoDB är det inte annorlunda. Med hjälp av index blir det mer effektivt att utföra frågor i MongoDB.

Om du hade en samling med tusentals dokument utan index, och du frågar för att hitta vissa dokument, skulle MongoDB i 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 data. Den här deluppsättningen lagrar värdet på ett visst fält eller en uppsättning fält ordnade efter fältets värde.

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

  • Förstå effekterna av index
  • Hur man skapar index: createIndex ()
  • Så här hittar du index: getindexes ()
  • Hur man släpper index: dropindex ()

Förstå effekterna 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 som Insättning, Radera och Uppdatera.

Om det ofta förekommer insättnings-, radera- och uppdateringsåtgärder som utförs på dokument, måste indexen ändras så ofta, vilket bara skulle vara en overhead för samlingen.

Nedanstå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å bara 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. Så när en sö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 dokumentet returneras.

Hur man skapar index: createIndex ()

Att skapa ett index i MongoDB görs med " createIndex " -metoden.

Följande exempel visar hur man lägger till index i samlingen. Låt oss anta att vi har samma anställdssamling som har fältnamnen "Employeeid" och "EmployeeName".

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

Kodförklaring:

  1. Den createIndex Metoden används för att skapa ett index baserat på "EmployeeID" av dokumentet.
  2. Parametern '1' indikerar att när indexet skapas med fältvärdena "Anställd", bör de sorteras i stigande ordning. Observera att detta skiljer sig från fältet _id (id-fältet används för att identifiera varje dokument i samlingen) som skapas automatiskt i samlingen av MongoDB. Dokumenten kommer nu att sorteras enligt anställd och inte fältet _id.

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

Produktion:

  1. NumIndexesBefore: 1 anger 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 _id-fältet som också räknas som ett fältvärde i indexet. Eftersom _id-indexfältet är en del av samlingen när den ursprungligen skapas är värdet för numIndexesBefore 1.
  2. NumIndexesAfter: 2 anger antalet fältvärden som fanns i indexen efter att kommandot kördes.
  3. Här anger "ok: 1" -utmatningen 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:

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

Så här hittar du index: getindexes ()

Att hitta ett index i MongoDB görs med "getIndexes" -metoden.

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

db.Employee.getIndexes()

Kodförklaring:

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

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

Produktion:

  1. Utgången returnerar ett dokument som bara visar att det finns två index i samlingen som är fältet _id och det andra är fältet Anställd id. : 1 indikerar att fältvärdena i indexet skapas i stigande ordning.

Hur man släpper index: dropindex ()

Att ta bort ett index i MongoDB görs med dropIndex-metoden.

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

db.Employee.dropIndex(Employeeid:1)

Kodförklaring:

  1. DropIndex-metoden tar de önskade fältvärdena som måste tas bort från indexet.

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

Produktion:

  1. NIndexesWas: 3 anger antalet fältvärden som fanns i indexen innan kommandot kördes. Kom ihåg att varje samling har _id-fältet som också räknas som ett fältvärde i indexet.
  2. 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 samtidigt i samlingen kan man använda kommandot dropIndexes.

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

db.Employee.dropIndex()

Kodförklaring:

  1. Metoden dropIndexes tappar alla index utom _id index.

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

Produktion:

  1. NIndexesWas: 2 anger antalet fältvärden som fanns i indexen innan kommandot kördes.
  2. Kom ihåg igen att varje samling har _id-fältet som också räknas som ett fältvärde i indexet, och det kommer inte att tas bort av MongoDB och det är vad detta meddelande indikerar.
  3. OK: 1-utgången anger att operationen lyckades.

Sammanfattning

  • Att definiera index är viktigt för snabbare och effektivare sökning av dokument i en samling.
  • Index kan skapas med hjälp av metoden createIndex. Index kan skapas på bara ett fält eller 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 släppa alla index.