On this page
$nin
$nin
- 语法:
{ field: { $nin: [ <value1>, <value2> ... <valueN> ]} }
- 语法:
$nin选择以下位置的文档:
field
值不在指定的array
或field
不存在。
有关不同 BSON 类型值的比较,请参见指定的 BSON 比较 Sequences。
考虑以下查询:
db.inventory.find( { qty: { $nin: [ 5, 15 ] } } )
此查询将选择inventory
集合中的所有文档,其中qty
字段值**不等于5
或15
。所选文档将包括那些不包含qty
字段的文档。
如果field
拥有一个数组,则$nin运算符将选择field
拥有一个 no 元素等于指定数组中值的数组(例如<value1>
,<value2>
等)。
考虑以下查询:
db.inventory.update( { tags: { $nin: [ "appliances", "school" ] } }, { $set: { sale: false } } )
此update()操作将设置inventory
集合中的sale
字段值,其中tags
字段保存一个数组,其中 no 元素与数组["appliances", "school"]
中的元素匹配,或者文档不包含tags
字段。
不等式运算符$nin 并非具有很高的选择性,因为它通常与索引的很大一部分匹配。结果,在许多情况下,带有索引的$nin查询的性能可能不比必须扫描集合中所有文档的$nin查询更好。另请参见Query Selectivity。