$nin

$nin

语法{ field: { $nin: [ <value1>, <value2> ... <valueN> ]} }

$nin选择以下位置的文档:

  • field值不在指定的范围内array

  • field不存在。

有关不同BSON类型值的比较,请参见指定的BSON比较顺序。

考虑以下查询:

db.inventory.find( { qty: { $nin: [ 5, 15 ] } } )

这个查询将选择库存集合中qty字段值不等于515的所有文档。所选文档将包括那些不包含qty字段的文档。

如果字段包含数组,那么$nin操作符将选择字段中没有元素等于指定数组中的值的文档(例如<value1><value2>,等等)。

考虑以下查询:

db.inventory.update( { tags: { $nin: [ "appliances", "school" ] } }, { $set: { sale: false } } )

这个update()操作将设置库存集合中的sale字段值,其中,tags字段包含一个数组,数组中没有与数组["appliances", "school"]中的元素匹配的元素,或者文档不包含tags字段。

不等运算符$nin的选择性不是很强,因为它经常匹配索引的很大一部分。因此,在许多情况下,带有索引的$nin查询的性能可能不比必须扫描集合中所有文档的$nin查询好。请参见查询选择性。

也可以看看

find()update()$set

译者:李冠飞

校对:

最后更新于