sql >> Databáze >  >> NoSQL >> MongoDB

Agregátní rámec nemůže používat indexy

Toto je pozdní odpověď, ale od $group v Mongu od verze 4.0 stále nebude používat indexy, může to být užitečné pro ostatní.

Chcete-li výrazně urychlit agregaci, proveďte $sort před $group .

Takže váš dotaz by byl:

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

To předpokládá index v campaign , který měl být vytvořen podle vašeho dotazu. V Mongo 4.0 vytvořte index pomocí db.ads_view.createIndex({campaign:1}) .

Testoval jsem to na kolekci obsahující 5,5+ Mio. dokumenty. Bez $sort , agregace by nebyla dokončena ani po několika hodinách; pomocí $sort před $group , agregace trvá několik sekund.



  1. Mám použít volbu allowDiskUse v prostředí produktu?

  2. Dokumentace slibů Mongoose říká, že dotazy nejsou sliby?

  3. Jak optimalizovat výkon MongoDB

  4. Vytváří knihovna Redis vlastní vlákno pro asynchronní zpětná volání