Nemůžete vytvořit index, který funguje tak, jak jste jej popsali. Neexistuje způsob, jak „indexovat“ jeden z výstupů kroku kanálu při spuštění agregace.
Existuje několik agregačních operátorů, se kterými může pracovat Indexy kolekce MongoDB .
Aktuálně mezi ně patří:$match , $sort , $limit a $skip .
Jako $match je jedním z nich, výkon agregačního dotazu, který jste napsali, může být přínosný deklarováním složeného indexu ve dvou polích, zejména pokud jste správně umístili $match na začátku potrubí:
db.theCollection.ensureIndex({user: 1, type: 1})
$group krok v potrubí převezme výsledky z $match a v ideálním případě být relativně rychlý. :)