Sie können keinen Index erstellen, der so funktioniert, wie Sie ihn beschrieben haben. Es gibt keine Möglichkeit, eine der Ausgaben eines Pipeline-Schritts zu „indizieren“, wenn eine Aggregation ausgeführt wird.
Es gibt einige Aggregationsoperatoren, mit denen arbeiten können MongoDB-Sammlungsindizes .
Derzeit beinhalten sie:$match , $sort , $limit , und $skip .
Als $match eines davon ist, kann die Leistung der von Ihnen geschriebenen Aggregationsabfrage davon profitieren, wenn Sie einen zusammengesetzten Index für die beiden Felder deklarieren, insbesondere da Sie $match korrekt platziert haben am Anfang der Pipeline:
db.theCollection.ensureIndex({user: 1, type: 1})
Die $group Schritt in der Pipeline übernimmt die Ergebnisse von $match und im Idealfall relativ schnell sein. :)