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

Spuštění dotazu Mongodb trvá příliš dlouho

Pro optimalizaci dotazu je třeba udělat mnoho věcí. Co bych zkusil :

  • Jak řekl Anthony Winzlet v komentářích, použijte jako první fázi $match stage. Tímto způsobem můžete snížit počet dokumentů předávaných do následujících fází a používat indexy.

  • Za předpokladu, že používáte verzi mongo alespoň 3.6, změňte fáze vyhledávání pomocí syntaxe 'let/pipeline' (viz zde ). Tímto způsobem můžete integrovat své 'externí filtry' ( "customer_info.status":{$ne:9}, "model_info.status":{$ne:9} ) ve fázi $match ve vašem vyhledávacím kanálu. S indexy na správných polích / kolekcích získáte určitý čas / paměť ve fázích vyhledávání $.

  • Udělejte si fáze uvolnění co nejpozději, abyste omezili počet dokumentů předávaných do následujících fází.

Je důležité pochopit, jak funguje agregační kanál:každá fáze přijímá data, dělá své věci a přenáší data do další fáze. Čím méně dat je tedy předáno do kanálu, tím rychlejší bude váš dotaz.




  1. Rekurzivní dotaz Mongodb nefunguje podle očekávání s $graphLookup

  2. Automatické zvýšení v MongoDB pro uložení sekvence jedinečného ID uživatele

  3. Nodejs se nemůže připojit k mongodb v cloudovém prostředí

  4. změna typu mongodb na pole