Du kan ikke oprette et indeks, der fungerer, som du har beskrevet det. Der er ikke en måde at "indeksere" et af output fra et pipelinetrin, når du kører en aggregering.
Der er nogle få aggregeringsoperatører, som kan arbejde med MongoDB samlingsindekser .
I øjeblikket inkluderer de:$match , $sort , $limit , og $skip .
Som $match er en af dem, kan ydeevnen af den aggregeringsforespørgsel, du har skrevet, drage fordel af ved at erklære et sammensat indeks på de to felter, især da du har placeret $match korrekt. i begyndelsen af pipelinen:
db.theCollection.ensureIndex({user: 1, type: 1})
$group trin i pipelinen vil tage resultaterne fra $match og ideelt set være relativt hurtig. :)