Esta é uma resposta tardia, mas como
$group
no Mongo a partir da versão 4.0 ainda não fará uso de índices, pode ser útil para outros. Para acelerar significativamente sua agregação, execute um
$sort
antes de $group
. Assim, sua consulta se tornaria:
db.ads_view.aggregate({$sort:{"campaign":1}},{$group: {_id : "$campaign", "action" : {$sum: 1} }});
Isso pressupõe um índice na
campaign
, que deveria ter sido criado de acordo com sua pergunta. No Mongo 4.0, crie o índice com db.ads_view.createIndex({campaign:1})
. Eu testei isso em uma coleção contendo 5,5+ Mio. documentos. Sem
$sort
, a agregação não teria terminado mesmo após várias horas; com $sort
precedendo $group
, a agregação está demorando alguns segundos.