Slot-Based Query Execution Engine
On this page
New in version 5.1.
To find and return query results, MongoDB uses one of the following query engines:
The classic query engine
The slot-based query execution engine, which is available for some queries starting in MongoDB 5.1.
MongoDB automatically selects the engine to execute the query. You cannot manually specify an engine for a particular query.
MongoDB can use the slot-based query execution engine for a subset of queries provided certain conditions are met. In most cases, the slot-based execution engine provides improved performance and lower CPU and memory costs compared to the classic query engine.
MongoDB uses the classic engine for queries that are ineligible for the slot-based query execution engine.
Eligible Queries for the Slot-Based Execution Engine
MongoDB can use the slot-based execution engine for the following queries:
$group
and$lookup
pipeline stages when specific conditions are met. For more information, see Slot-Based Query Execution Engine Pipeline Optimizations.$match
and$project
pipeline stages that use supported query operators and expressions.Certain
$sort
pipeline stages that do not include$meta
sorts.find()
queries that use supported query operators and expressions.
Note
The slot-based execution engine does not support geospatial query operators.
Determine which Query Engine was Used
There are a few ways to determine whether the classic engine or the slot-based execution engine was used to execute a query.
Check Query Explain Results
The explain results for a query differ based on
which query engine was used. For example, explain results for queries
executed using the slot-based execution engine include the explain.queryPlanner.winningPlan.slotBasedPlan
field.
For more information about the differences in explain results between query engines, see Explain Output Structure.
Check Slow Query Logs
Starting in MongoDB 6.2, slow operation log messages include a
queryFramework
field that indicates which query engine executed the
query:
queryFramework: "classic"
indicates that the classic engine executed the query.queryFramework: "sbe"
indicates that the slot-based query execution engine executed the query.
To see an example log message for a query that used the slot-based execution engine, see Slow Operation.