$explain
Note
Deprecated since v3.0
Starting in v3.2, the
$explain
operator is deprecated in themongo
shell. In themongo
shell, usedb.collection.explain()
orcursor.explain()
instead.The
$explain
operator provides information on the query plan. It returns a document that describes the process and indexes used to return the query. This may provide useful insight when attempting to optimize a query. For details on the output, see cursor.explain().You can specify the
$explain
operator in either of the following forms:db.collection.find()._addSpecial( "$explain", 1 ) db.collection.find( { $query: {}, $explain: 1 } ) In the
mongo
shell, you also can retrieve query plan information through theexplain()
method:db.collection.find().explain()
Behavior
$explain
runs the actual query to determine the result.
Although there are some differences between running the query with
$explain
and running without, generally, the performance
will be similar between the two. So, if the query is slow, the
$explain
operation is also slow.
Additionally, the $explain
operation reevaluates a set
of candidate query plans, which may cause the $explain
operation to perform differently than a normal query. As a result,
these operations generally provide an accurate account of how
MongoDB would perform the query, but do not reflect the length of
these queries.
Tip
MongoDB Performance page for information regarding optimization strategies.
Database Profiler tutorial for information regarding the database profile.