To spóźniona odpowiedź, ale ponieważ $group w Mongo od wersji 4.0 nadal nie będzie korzystał z indeksów, może to być pomocne dla innych.
Aby znacznie przyspieszyć agregację, wykonaj $sort przed $group .
Twoje zapytanie będzie wyglądało następująco:
db.ads_view.aggregate({$sort:{"campaign":1}},{$group: {_id : "$campaign", "action" : {$sum: 1} }});
Zakłada to indeks campaign , który powinien zostać utworzony zgodnie z Twoim pytaniem. W Mongo 4.0 utwórz indeks za pomocą db.ads_view.createIndex({campaign:1}) .
Przetestowałem to na kolekcji zawierającej ponad 5,5 mln. dokumenty. Bez $sort , agregacja nie zakończyłaby się nawet po kilku godzinach; z $sort poprzedzający $group , agregacja zajmuje kilka sekund.