Index är ett typiskt sätt att snabba upp frågor i vanliga databassystem. Det finns ingen skillnad mellan MongoDB och ett dokumentbaserat databassystem. Den här artikeln ger insikt om indexet i MongoDB, för frågeoptimering.
Index i Mongo:
Standard
_id är ett ObjectId-objekt, 12-byte BSON-typ som garanterar unikhet inom samlingen. Objekt-ID:t genereras baserat på tidsstämpel, maskin-ID, process-ID och en processlokal inkrementell räknare.
Enstaka fält
För ett enfältsindex och sorteringsoperationer spelar sorteringsordningen (d.v.s. stigande eller fallande) för indexnyckeln ingen roll eftersom MongoDB kan gå igenom indexet i båda riktningarna. Värdet på index är typen av index. Till exempel anger 1 stigande ordning och -1 anger fallande ordning.
db.friends.createIndex( { "name" : 1 } )
Sammansatt fält
Ordningen på fält som listas i ett sammansatt index har betydelse. Till exempel, om ett sammansatt index består av { userid:1, score:-1 }, sorteras indexet först efter användar-id och sedan, inom varje användar-id-värde, sorteras efter poäng.
db.products.createIndex( { "item": 1, "stock": 1 } )
Flera tangenter
MongoDB använder flera index för att indexera innehållet i en array. MongoDB skapar separata indexposter för varje element i arrayen. Du behöver inte uttryckligen skapa flera nycklar.
Textindex
En samling kan ha högst ett textindex.
Prestandakostnad för textindex:
textindex kan vara stora. De innehåller en indexpost för varje unikt efterstammat ord i varje indexerat fält för varje infogat dokument.
textindex kommer att påverka insättningsgenomströmningen eftersom MongoDB måste lägga till en indexpost för varje unikt efterstammat ord i varje indexerat fält i varje nytt källdokument.
db.reviews.createIndex( { comments: "text" } )
Hashindex
Fråga innehåll efter dess hashade värde. Hash är en funktion som beräknas utifrån dess värde. Det hashade värdet är utformat för att vara distinkt värde. En fördel är att den är så snabb, som som mest tar O(1) men enligt kontraktet kommer det normala binära sökträdet att ta O(Log(N)). Hash kommer teoretiskt att vara snabbare än normal implementering av binärt sökträd. Men nackdelen är att hashindex som utför intervallsökning kommer att gå extremt långsamt än normalt index.
Detta är ett exempel i python för att bygga ett hashindex
db.active.createIndex( { a: "hashed" } )