MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Das Aggregat-Framework kann keine Indizes verwenden

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.