MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Indicizzazione Mongodb per aggregati

Non puoi creare un indice che funzioni nel modo in cui lo hai descritto. Non c'è un modo per "indicizzare" uno degli output di un passaggio della pipeline durante l'esecuzione di un'aggregazione.

Esistono alcuni operatori di aggregazione con cui possono lavorare Indici di raccolta MongoDB .

Attualmente includono:$match , $sort , $limit e $skip .

Come $match è uno di questi, le prestazioni della query di aggregazione che hai scritto possono trarre vantaggio dalla dichiarazione di un indice composto sui due campi, soprattutto perché hai posizionato correttamente il $match all'inizio della pipeline:

db.theCollection.ensureIndex({user: 1, type: 1})

Il $group il passaggio nella pipeline prenderà i risultati da $match e idealmente, essere relativamente veloce. :)