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

L'esecuzione della query Mongodb richiede troppo tempo

Ci sono molte cose da fare per ottimizzare la tua query. Cosa proverei :

  • Come ha detto Anthony Winzlet nei commenti, usa il più possibile $match stage come primo stadio. In questo modo puoi ridurre il numero di documenti passati alle fasi successive e utilizzare gli indici.

  • Supponendo che utilizzi almeno la versione 3.6 mongo, modifica le fasi di ricerca utilizzando la sintassi 'let/pipeline' (vedi qui ). In questo modo, puoi integrare i tuoi "filtri esterni" ("customer_info.status":{$ne:9}, "model_info.status":{$ne:9} ) in una fase $match nella pipeline di ricerca. Con gli indici sui campi/raccolte a destra, guadagnerai un po' di tempo/memoria nelle tue fasi di $lookup.

  • Svolgi le tue fasi di rilassamento il più tardi possibile, per limitare il numero di documenti passati alle fasi successive.

È importante capire come funziona la pipeline di aggregazione:ogni fase riceve dati, fa le sue cose e passa i dati alla fase successiva. Quindi meno dati vengono passati alla pipeline, più veloce sarà la tua query.