Ini adalah jawaban yang terlambat, tetapi karena $group di Mongo pada versi 4.0 masih tidak menggunakan indeks, mungkin bermanfaat bagi orang lain.
Untuk mempercepat agregasi Anda secara signifikan, lakukan $sort sebelum $group .
Jadi kueri Anda akan menjadi:
db.ads_view.aggregate({$sort:{"campaign":1}},{$group: {_id : "$campaign", "action" : {$sum: 1} }});
Ini mengasumsikan indeks pada campaign , yang seharusnya dibuat sesuai dengan pertanyaan Anda. Di Mongo 4.0, buat indeks dengan db.ads_view.createIndex({campaign:1}) .
Saya menguji ini pada koleksi yang berisi 5.5+ Mio. dokumen. Tanpa $sort , agregasi tidak akan selesai bahkan setelah beberapa jam; dengan $sort sebelumnya $group , agregasi membutuhkan waktu beberapa detik.