Nuevo en la versión 5.1.
Para buscar y devolver resultados de queries, MongoDB emplea uno de los siguientes motores de consulta:
El motor de query clásico
El motor de ejecución de consultas basado en slots, que está disponible para algunas consultas a partir de MongoDB 5.1.
MongoDB selecciona automáticamente el motor para ejecutar la query. No puedes especificar manualmente un motor para una query determinada.
MongoDB puede utilizar el motor de ejecución de consultas basado en slots para un subconjunto de consultas, siempre que se cumplan ciertas condiciones. En la mayoría de los casos, el motor de ejecución basado en ranuras proporciona un mejor rendimiento y menores costos de CPU y memoria en comparación con el motor de query clásico.
MongoDB utiliza el motor clásico para queries que no son elegibles para el motor de ejecución de queries basado en slots.
Nota
A partir de la versión 7.0.17, el motor de ejecución de query basado en slots deja de estar habilitado por defecto para las versiones de parches de 7.0. Si quieres que tus consultas usen el motor de ejecución de consultas basado en slots, por favor actualiza a la versión 8.0, donde está habilitado por defecto.
Consultas elegibles para el motor de ejecución basado en ranuras
MongoDB determina la elegibilidad para usar el motor de ejecución basado en ranuras para cada query, y considera el soporte para cada operador y expresión presente en la query. Por ejemplo, dos pipelines comunes que utilizan motor basados en ranuras son las agregaciones con
$group $lookup Etapas o. Sin embargo, la compatibilidad con el motor de ejecución basado en ranuras depende de la versión y está en constante evolución.
Para ver si tu consulta utilizó el motor de ejecución basado en slots, consulta el Sección Determinar cuál motor de consultas se utilizó.
Determinar qué motor de query se utilizó
Existen varias maneras de determinar si se utilizó el motor clásico o el motor de ejecución basado en slots para ejecutar una query.
Verificar resultados de explicación de la query
Los resultados de explicación para una query varían según el motor de query utilizado. Por ejemplo, explicar los resultados de las consultas ejecutadas usando el motor de ejecución basado en slots incluye el campo explain.queryPlanner.winningPlan.slotBasedPlan.
Para más información sobre las diferencias en los resultados de explicación entre los motores de query, consulta Estructura de Salida de Explicación.
Comprobar registros de consultas lentas
Los mensajes de registro de operaciones lentas incluyen un campo queryFramework que indica qué motor de query ejecutó el query:
queryFramework: "classic"indica que el motor clásico ejecutó el query.queryFramework: "sbe"indica que el motor de ejecución de query basado en ranuras ejecutó el query.
Para ver un ejemplo de mensaje de registro de una consulta que utilizó el motor de ejecución basado en slots, consulta Operación lenta.