A logical operator is a word or a function that can be used to compare two or more expressions so that the compounded result will return the boolean value. MongoDB supports the standard set of four Logical Operators that we already know in our programming language like Java. Following are the available logical operators in MongoDB.
Operator | Description |
$and | The $and operator match all the query statements specified. |
$or | The $or operator matches at least one query statement specified. |
$nor | The $nor operator fails to match non of the query statement specified. |
$not | The $not operator ignores or negates the query statement requirement. |
Logical operator query syntax
The syntax for $and
, $or
and $nor
operators are the same. These operators accept an array of expressions like in the syntax given below:
{<operator>: [{expression1}, {expression2}, ...]}
The syntax for $not
operator is different than others. It accepts only one expression which needs to be negated. The array syntax is not necessary for this operator. See the syntax below for $not
operator:
{ fieldName: { $not: { operator-expression } } }
$and operator in MongoDB
The $and
operator in MongoDB is used by default when an operator is not specified. It performs a logical AND operation on an array of one or more expressions that matches all the query expressions that are specified.
The default $and
operator example:
db.employee.find({"salary": 50000, "department":"Engineering"})
The above query returns all the employees from Engineering department whose salary is 50000.
Here, we haven’t used $and
operator but it still worked as $and
operator.
Hence, it is confirmed that when we don’t define an operator in the query then the default operator would be $and
.
$and
operator example:
db.employee.find({"$and":[{"salary":50000},{"department":"Engineering"}]})
This query also returns the same data as the earlier query which was without $and
operator defined explicitly.
$or operator in MongoDB
The $or
operator performs the logical OR operation on an array of one or more expressions and selects all the documents that satisfy at least one query expression specified.
Example:
db.employee.find({"$or":[{"salary":50000},{"department":"Engineering"}]})
This query returns the data that matches either salary 50000 or department Engineering.
$nor operator in MongoDB
The $nor
operator performs the logical operator NOR
operation on an array of one or more query expressions and selects the documents that fail to match non of the query statement specified.
Example:
db.employee.find({"$nor":[{"salary":50000},{"department":"Engineering"}]})
This query ignores both the condition. This basically means that it returns the employee document, neither the salary is 50000 nor the department is Engineering.
$not operator in MongoDB
The $not
operator ignores or negates the query statement requirement. It performs a logical NOT
operation with the given operator-expression
and selects the documents that do not match the given operator expression.
Example:
db.employee.find({"salary": {"$not":{"$gt":50001}}})
The above query returns the documents whose salary is not greater than 50001 from the employee collection