$nor

在本页面

$nor

$nor对包含一个或多个查询表达式的数组执行逻辑nor操作,并选择数组中所有查询表达式失败的文档。$nor有以下语法:

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

也可以看看

find(), update(), $or, $set, and $exists.

例子

$nor查询有两种表述

考虑以下仅使用$nor操作符的查询:

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

此查询将返回以下所有文档:

  • 包含值不等于1.99price字段和不等于true或的sale字段

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

  • 不包含price字段,但sale包含值不等于true

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

$nor和另外的比较

考虑以下查询:

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

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

  • price字段值不等于1.99

  • qty字段值不小于20

  • sales字段的值不等于true

包括那些不包含这些字段的文档。

返回不包含$nor表达式中字段的文档的例外情况是,$nor操作符与$exists操作符一起使用。

$nor$exists

下面的查询使用$nor操作符和$exists操作符:

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

此查询将返回以下所有文档:

包含值不等于1.99price字段和值不等于truesale字段

译者:李冠飞

校对:

最后更新于