Questa è una risposta tardiva, ma poiché $group
in Mongo a partire dalla versione 4.0 non utilizzerà ancora gli indici, potrebbe essere utile per altri.
Per velocizzare notevolmente la tua aggregazione, esegui un $sort
prima di $group
.
Quindi la tua domanda diventerebbe:
db.ads_view.aggregate({$sort:{"campaign":1}},{$group: {_id : "$campaign", "action" : {$sum: 1} }});
Ciò presuppone un indice su campaign
, che avrebbe dovuto essere creato in base alla tua domanda. In Mongo 4.0, crea l'indice con db.ads_view.createIndex({campaign:1})
.
L'ho testato su una raccolta contenente 5,5+ Mio. documenti. Senza $sort
, l'aggregazione non sarebbe terminata anche dopo diverse ore; con $sort
precedente $group
, l'aggregazione sta impiegando un paio di secondi.