sql >> Databasteknik >  >> NoSQL >> MongoDB

Aggregat ramverk kan inte använda index

Detta är ett sent svar, men eftersom $group i Mongo från och med version 4.0 kommer fortfarande inte att använda index, det kan vara till hjälp för andra.

Utför en $sort för att påskynda din aggregering avsevärt före $group .

Så din fråga skulle bli:

db.ads_view.aggregate({$sort:{"campaign":1}},{$group: {_id : "$campaign", "action" : {$sum: 1} }});

Detta förutsätter ett index på campaign , som borde ha skapats enligt din fråga. I Mongo 4.0 skapar du indexet med db.ads_view.createIndex({campaign:1}) .

Jag testade detta på en samling som innehöll 5,5+ miljoner. dokument. Utan $sort , skulle aggregeringen inte ha avslutats ens efter flera timmar; med $sort före $group , tar aggregeringen ett par sekunder.



  1. MongoDB på Ubuntu kommer inte att starta som en tjänst, ingenting i loggen

  2. mongoDB:$dateToString-format för att visa tid med 15 minuters intervall

  3. MongoDB BSON-codec används inte vid kodning av objekt

  4. Fulltextsökning med vikt i mongoose