Nie możesz utworzyć indeksu, który działa tak, jak go opisałeś. Nie ma sposobu na „indeksowanie” jednego z wyjść kroku potoku podczas uruchamiania agregacji.
Istnieje kilka operatorów agregacji, z którymi może współpracować Indeksy kolekcji MongoDB .
Obecnie obejmują one:$match , $sort , $limit i $skip .
Jako $match jest jednym z nich, wydajność zapytania agregującego, które napisałeś, może zyskać dzięki zadeklarowaniu indeksu złożonego w dwóch polach, zwłaszcza że poprawnie umieściłeś $match na początku potoku:
db.theCollection.ensureIndex({user: 1, type: 1})
$group krok w potoku pobierze wyniki z $match a najlepiej być stosunkowo szybkim. :)