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.