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