$and
$and
performs a logical AND
operation on an arrayof one or more expressions (e.g. <expression1>
,<expression2>
, etc.) and selects the documents that satisfyall the expressions in the array. The $and
operatoruses short-circuit evaluation. If the first expression(e.g. <expression1>
) evaluates to false
, MongoDB will notevaluate the remaining expressions.
Note
MongoDB provides an implicit AND
operation when specifying acomma separated list of expressions. Using an explicit AND
with the $and
operator is necessary when the same fieldor operator has to be specified in multiple expressions.
Examples
AND Queries With Multiple Expressions Specifying the Same Field
Consider the following example:
- db.inventory.find( { $and: [ { price: { $ne: 1.99 } }, { price: { $exists: true } } ] } )
This query will select all documents in the inventory
collection where:
- the
price
field value is not equal to1.99
and - the
price
field exists.
This query can be also be constructed with an implicit AND
operation by combining the operator expressions for the price
field. For example, this query can be written as:
- db.inventory.find( { price: { $ne: 1.99, $exists: true } } )
AND Queries With Multiple Expressions Specifying the Same Operator
Consider the following example:
- db.inventory.find( {
- $and : [
- { $or : [ { price : 0.99 }, { price : 1.99 } ] },
- { $or : [ { sale : true }, { qty : { $lt : 20 } } ] }
- ]
- } )
This query will select all documents where:
- the
price
field value equals0.99
or1.99
, and - the
sale
field value is equal totrue
or theqty
field value is less than20
.
This query cannot be constructed using an implicit AND
operation,because it uses the $or
operator more than once.
See also