$nin

  • $nin

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

$nin选择以下文件:

  • field value 不在指定的array

  • field不存在。

有关不同 BSON 类型值的比较,请参阅指定的 BSON 比较 order。

请考虑以下查询:

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

此查询将选择inventory集合中qty字段 value ****不等于515的所有文档。所选文档将包括那些不包含qty字段的文档。

如果field持有 array,则$nin operator 选择field包含 array 的文档,其中no元素等于指定 array 中的 value(e.g. <value1><value2>,etc.)。

请考虑以下查询:

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

此update()操作将在inventory集合中设置sale field value,其中tags字段包含 array,其中no元素与 array ["appliances", "school"]中的元素匹配,或者文档不包含tags字段。

不等式 operator $nin不是很有选择性,因为它经常匹配索引的很大一部分。因此,在许多情况下,带索引的$nin查询可能不会比必须扫描集合中所有文档的$nin查询执行得更好。另见查询选择性。

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