Dette er et sent svar, men siden $group
i Mongo fra version 4.0 stadig ikke vil gøre brug af indekser, kan det være nyttigt for andre.
For at fremskynde din aggregering betydeligt, udfør en $sort
før $group
.
Så din forespørgsel ville blive:
db.ads_view.aggregate({$sort:{"campaign":1}},{$group: {_id : "$campaign", "action" : {$sum: 1} }});
Dette forudsætter et indeks på campaign
, som skulle være oprettet i henhold til dit spørgsmål. I Mongo 4.0 skal du oprette indekset med db.ads_view.createIndex({campaign:1})
.
Jeg testede dette på en samling indeholdende 5,5+ mio. Dokumenter. Uden $sort
, ville sammenlægningen ikke være færdig, selv efter flere timer; med $sort
forud for $group
, aggregering tager et par sekunder.