Esta es una respuesta tardía, pero desde $group
en Mongo a partir de la versión 4.0 aún no utilizará índices, puede ser útil para otros.
Para acelerar significativamente su agregación, realice un $sort
antes de $group
.
Entonces su consulta se convertiría en:
db.ads_view.aggregate({$sort:{"campaign":1}},{$group: {_id : "$campaign", "action" : {$sum: 1} }});
Esto supone un índice en campaign
, que debería haberse creado de acuerdo con su pregunta. En Mongo 4.0, cree el índice con db.ads_view.createIndex({campaign:1})
.
Probé esto en una colección que contenía 5.5+ Mio. documentos. Sin $sort
, la agregación no habría terminado incluso después de varias horas; con $sort
anterior $group
, la agregación está tardando un par de segundos.