C'est une réponse tardive, mais depuis $group
dans Mongo à partir de la version 4.0 n'utilisera toujours pas les index, cela peut être utile pour les autres.
Pour accélérer considérablement votre agrégation, effectuez un $sort
avant $group
.
Ainsi, votre requête deviendrait :
db.ads_view.aggregate({$sort:{"campaign":1}},{$group: {_id : "$campaign", "action" : {$sum: 1} }});
Cela suppose un index sur campaign
, qui aurait dû être créé en fonction de votre question. Dans Mongo 4.0, créez l'index avec db.ads_view.createIndex({campaign:1})
.
J'ai testé cela sur une collection contenant 5,5+ Mio. documents. Sans $sort
, l'agrégation ne serait pas terminée même après plusieurs heures ; avec $sort
$group
précédent , l'agrégation prend quelques secondes.