MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Il framework aggregato non può usare gli indici

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.