Docs Menu

$nor

項目一覧

$nor

$nor performs a logical NOR operation on an array of one or more query predicates and selects the documents that fail all the query predicates in the array. The $nor has the following syntax:

{ $nor: [ { <expression1> }, { <expression2> }, ... { <expressionN> } ] }

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 ではない equal to 1.99 and contain the sale field whose value is not equal to true or

  • contain the price field whose value is ではない equal to 1.99 but do ではない contain the sale field or

  • do ではない contain the price field but contain the sale field whose value is not equal to true or

  • do ではない contain the price field and do ではない contain the sale field

次のクエリを考えてみましょう。

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 ではない equal 1.99 and

  • the qty field value is ではない less than 20 and

  • the sale field value is ではない equal to true

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.

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 ではない equal to 1.99 and contain the sale field whose value is not equal to true

以下も参照してください。

項目一覧