MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Mongodb-Indizierung für Aggregate

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