On this page
$nor
On this page
- $nor
- 
    $norperforms a logicalNORoperation on an array of one or more query expression and selects the documents that fail all the query expressions in the array. The$norhas 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 pricefield whose value is not equal to1.99and contain thesalefield whose value is not equal totrueor
- contain the pricefield whose value is not equal to1.99but do not contain thesalefield or
- do not contain the pricefield but contain thesalefield whose value is not equal totrueor
- do not contain the pricefield and do not contain thesalefield
$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 pricefield value does not equal1.99and
- the qtyfield value is not less than20and
- the salefield 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 pricefield whose value is not equal to1.99and contain thesalefield whose value is not equal totrue