Toto je pozdní odpověď, ale od $group
v Mongu od verze 4.0 stále nebude používat indexy, může to být užitečné pro ostatní.
Chcete-li výrazně urychlit agregaci, proveďte $sort
před $group
.
Takže váš dotaz by byl:
db.ads_view.aggregate({$sort:{"campaign":1}},{$group: {_id : "$campaign", "action" : {$sum: 1} }});
To předpokládá index v campaign
, který měl být vytvořen podle vašeho dotazu. V Mongo 4.0 vytvořte index pomocí db.ads_view.createIndex({campaign:1})
.
Testoval jsem to na kolekci obsahující 5,5+ Mio. dokumenty. Bez $sort
, agregace by nebyla dokončena ani po několika hodinách; pomocí $sort
před $group
, agregace trvá několik sekund.