Detta är ett sent svar, men eftersom $group
i Mongo från och med version 4.0 kommer fortfarande inte att använda index, det kan vara till hjälp för andra.
Utför en $sort
för att påskynda din aggregering avsevärt före $group
.
Så din fråga skulle bli:
db.ads_view.aggregate({$sort:{"campaign":1}},{$group: {_id : "$campaign", "action" : {$sum: 1} }});
Detta förutsätter ett index på campaign
, som borde ha skapats enligt din fråga. I Mongo 4.0 skapar du indexet med db.ads_view.createIndex({campaign:1})
.
Jag testade detta på en samling som innehöll 5,5+ miljoner. dokument. Utan $sort
, skulle aggregeringen inte ha avslutats ens efter flera timmar; med $sort
före $group
, tar aggregeringen ett par sekunder.