-
Notifications
You must be signed in to change notification settings - Fork 1.7k
/
explain.txt
65 lines (45 loc) · 2.01 KB
/
explain.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
========
$explain
========
.. default-domain:: mongodb
.. contents:: On this page
:local:
:backlinks: none
:depth: 1
:class: singlecol
.. operator:: $explain
.. include:: /includes/extracts/mongo-shell-deprecated-meta-operator-explain.rst
The :operator:`$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 :doc:`/reference/method/cursor.explain`.
You can specify the :operator:`$explain` operator in either of the
following forms:
.. code-block:: javascript
db.collection.find()._addSpecial( "$explain", 1 )
db.collection.find( { $query: {}, $explain: 1 } )
In the :binary:`~bin.mongo` shell, you also can retrieve query plan
information through the :method:`~cursor.explain()` method:
.. code-block:: javascript
db.collection.find().explain()
Behavior
--------
:operator:`$explain` runs the actual query to determine the result.
Although there are some differences between running the query with
:operator:`$explain` and running without, generally, the performance
will be similar between the two. So, if the query is slow, the
:operator:`$explain` operation is also slow.
Additionally, the :operator:`$explain` operation reevaluates a set
of candidate query plans, which may cause the :operator:`$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.
.. seealso::
- :method:`~cursor.explain()`
- :doc:`/administration/analyzing-mongodb-performance` page for information
regarding optimization strategies.
- :doc:`/tutorial/manage-the-database-profiler` tutorial for
information regarding the database profile.
- :doc:`Current Operation Reporting </reference/method/db.currentOp>`