MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Le framework agrégé ne peut pas utiliser les index

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.