Docs 菜单

Docs 主页开发应用程序MongoDB Manual

$nin

在此页面上

  • 兼容性
  • 语法
  • 举例
$nin

$nin 选择文档,其中:

  • 指定的字段值不在指定的数组中,也不在

  • 指定的字段不存在。

可以使用 $nin 查找托管在以下环境中的部署:

  • MongoDB Atlas :用于在云中部署 MongoDB 的完全托管服务

$nin操作符具有以下形式:

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

如果field包含一个数组,则$nin操作符会选择满足以下条件的文档field包含一个数组,且该数组中不存在等于指定数组中的值的元素(例如, <value1><value2>等开)。

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

创建 inventory 集合:

db.inventory.insertMany( [
{ "item": "Pens", "quantity": 350, "tags": [ "school", "office" ] },
{ "item": "Erasers", "quantity": 15, "tags": [ "school", "home" ] },
{ "item": "Maps", "tags": [ "office", "storage" ] },
{ "item": "Books", "quantity": 5, "tags": [ "school", "storage", "home" ] }
] )

以下查询从 inventory 集合中选择 quantity 等于 5 或 15 的所有文档。

该查询还匹配没有 quantity 字段的文档。

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

示例输出:

{ item: 'Pens', quantity: 350, tags: [ 'school', 'office' ] },
{ item: 'Maps', tags: [ 'office', 'storage' ] }

对于没有 "school" 标签的文档,将 exclude 字段设置为 true

db.inventory.updateMany(
{ tags: { $nin: [ "school" ] } },
{ $set: { exclude: true } }
)

updateMany()当文档不包含 所匹配的字段时,$nin 也会选择该文档。

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

提示

另请参阅:

← $ne

在此页面上