Dies ist eine späte Antwort, aber seit $group
in Mongo ab Version 4.0 werden immer noch keine Indizes verwendet, es kann für andere hilfreich sein.
Um Ihre Aggregation erheblich zu beschleunigen, führen Sie einen $sort
durch vor $group
.
Ihre Abfrage würde also folgendermaßen aussehen:
db.ads_view.aggregate({$sort:{"campaign":1}},{$group: {_id : "$campaign", "action" : {$sum: 1} }});
Dies setzt einen Index für campaign
voraus , die gemäß Ihrer Frage erstellt werden sollte. Erstellen Sie in Mongo 4.0 den Index mit db.ads_view.createIndex({campaign:1})
.
Ich habe dies an einer Sammlung mit über 5,5 Mio. getestet. Unterlagen. Ohne $sort
, wäre die Aggregation auch nach mehreren Stunden noch nicht abgeschlossen; mit $sort
vor $group
, dauert die Aggregation einige Sekunden.