Vous ne pouvez pas créer un index qui fonctionne comme vous l'avez décrit. Il n'existe aucun moyen "d'indexer" l'une des sorties d'une étape de pipeline lors de l'exécution d'une agrégation.
Il existe quelques opérateurs d'agrégation avec lesquels peut fonctionner Index de collection MongoDB .
Actuellement, ils incluent :$match
, $sort
, $limit
, et $skip
.
Comme $match
est l'un d'entre eux, les performances de la requête d'agrégation que vous avez écrite peuvent bénéficier de la déclaration d'un index composé sur les deux champs, d'autant plus que vous avez correctement placé le $match
au début du pipeline :
db.theCollection.ensureIndex({user: 1, type: 1})
Le $group
étape dans le pipeline prendra les résultats du $match
et idéalement, être relativement rapide. :)