$nor
On this page
$nor
$nor
performs a logicalNOR
operation on an array of one or more query expression and selects the documents that fail all the query expressions in the array. The$nor
has the following syntax:{ $nor: [ { <expression1> }, { <expression2> }, ... { <expressionN> } ] }
Examples
$nor
Query with Two Expressions
Consider the following query which uses only the $nor
operator:
db.inventory.find( { $nor: [ { price: 1.99 }, { sale: true } ] } )
This query will return all documents that:
contain the
price
field whose value is not equal to1.99
and contain thesale
field whose value is not equal totrue
orcontain the
price
field whose value is not equal to1.99
but do not contain thesale
field ordo not contain the
price
field but contain thesale
field whose value is not equal totrue
ordo not contain the
price
field and do not contain thesale
field
$nor
and Additional Comparisons
Consider the following query:
db.inventory.find( { $nor: [ { price: 1.99 }, { qty: { $lt: 20 } }, { sale: true } ] } )
This query will select all documents in the inventory
collection
where:
the
price
field value does not equal1.99
andthe
qty
field value is not less than20
andthe
sale
field value is not equal totrue
including those documents that do not contain these field(s).
The exception in returning documents that do not contain the field
in the $nor
expression is when the $nor
operator is
used with the $exists
operator.
$nor
and $exists
Compare that with the following query which uses the
$nor
operator with the $exists
operator:
db.inventory.find( { $nor: [ { price: 1.99 }, { price: { $exists: false } }, { sale: true }, { sale: { $exists: false } } ] } )
This query will return all documents that:
contain the
price
field whose value is not equal to1.99
and contain thesale
field whose value is not equal totrue