$or¶
On this page
-
$or
¶ The
$or
operator performs a logicalOR
operation on an array of two or more<expressions>
and selects the documents that satisfy at least one of the<expressions>
. The$or
has the following syntax:Consider the following example:
This query will select all documents in the
inventory
collection where either thequantity
field value is less than20
or theprice
field value equals10
.
Behaviors¶
$or
Clauses and Indexes¶
When evaluating the clauses in the $or
expression, MongoDB
either performs a collection scan or, if all the clauses are supported
by indexes, MongoDB performs index scans. That is, for MongoDB to use
indexes to evaluate an $or
expression, all the clauses in the
$or
expression must be supported by indexes. Otherwise,
MongoDB will perform a collection scan.
When using indexes with $or
queries, each clause of an
$or
can use its own index. Consider the following query:
To support this query, rather than a compound index, you would create
one index on quantity
and another index on price
:
MongoDB can use all but the geoHaystack
index to support $or
clauses.
$or
and text
Queries¶
If $or
includes a $text
query, all clauses in the
$or
array must be supported by an index. This is because a
$text
query must use an index, and $or
can only use
indexes if all its clauses are supported by indexes. If the
$text
query cannot use an index, the query will return an
error.
$or
and GeoSpatial Queries¶
$or
supports geospatial clauses with the following exception
for the near clause (near clause includes $nearSphere
and
$near
). $or
cannot contain a near clause with any
other clause.
$or
and Sort Operations¶
When executing $or
queries with a sort()
,
MongoDB can now use indexes that support the $or
clauses.
Previous versions did not use the indexes.