$nor

在本页面

  • 例子

  • $nor

    • $nor对一个或多个查询表达式的 array 执行逻辑NOR操作,并选择失败的文档 array 中的所有查询表达式。 $nor具有以下语法:
{ $nor: [ { <expression1> }, { <expression2> }, ...  { <expressionN> } ] }

也可以看看
find(),update(),$or,$set和$exists。

例子

$nor 使用两个表达式查询

请考虑以下只使用$nor operator 的查询:

db.inventory.find( { $nor: [ { price: 1.99 }, { sale: true } ]  } )

此查询将_return 所有文档:

  • 包含字段,其 value 不等于1.99并包含sale字段,其 value 不等于true

  • 包含字段,其 value 不等于1.99但不包含sale字段

  • 不包含price字段但包含其 value 不等于true sale字段

  • 不包含price字段且不包含sale字段

$nor 和其他比较

请考虑以下查询:

db.inventory.find( { $nor: [ { price: 1.99 }, { qty: { $lt: 20 } }, { sale: true } ] } )

此查询将选择inventory集合中的所有文档,其中:

  • price字段 value 不等于1.99

  • qty field value 不小于20

  • sale字段 value 不等于true

包括那些不包含这些 field(s 的文件。

返回不包含$nor表达式中的字段的文档中的 exception 是$nor operator 与$exists operator 一起使用的时间。

$nor 和$exists

将其与使用$nor operator 和$exists operator 的以下查询进行比较:

db.inventory.find( { $nor: [ { price: 1.99 }, { price: { $exists: false } },
                             { sale: true }, { sale: { $exists: false } } ] } )

此查询将_return 所有文档:

  • 包含其 value 不等于1.99price字段,并包含_val不等于truesale字段