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. :)