sql >> Databasteknik >  >> NoSQL >> MongoDB

Index i MongoDB

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" } )

  1. Hur man begränsar antalet uppdateringsdokument i mongodb

  2. Hur konfigurerar man ett MongoDB-kluster som stöder sessioner?

  3. Hur man kontrollerar en kolumns datatyp i SQL

  4. Redis autocomplete