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