sql >> Base de Datos >  >> NoSQL >> MongoDB

La ejecución de consultas de Mongodb toma demasiado tiempo

Hay muchas cosas que hacer para optimizar su consulta. Lo que intentaría:

  • Como dijo Anthony Winzlet en los comentarios, use la etapa $match posible como primera etapa. De esta manera, puede reducir la cantidad de documentos que pasan a las siguientes etapas y usar índices.

  • Suponiendo que usa al menos la versión 3.6 de mongo, cambie sus etapas de búsqueda usando la sintaxis 'let/pipeline' (ver aquí ). De esta forma, puede integrar sus 'filtros externos' ( "customer_info.status":{$ne:9}, "model_info.status":{$ne:9} ) en una etapa de $coincidencia en su tubería de búsquedas. Con índices en los campos/colecciones correctos, ganará algo de tiempo/memoria en sus etapas de $búsqueda.

  • Realice sus etapas de relajación lo más tarde posible, para restringir el número de documentos pasados ​​a las siguientes etapas.

Es importante comprender cómo funciona la tubería de agregación:cada etapa recibe datos, hace sus cosas y pasa datos a la siguiente etapa. Por lo tanto, cuantos menos datos pasen a la canalización, más rápida será su consulta.