Mongodb:如何使用“not in”查询


您可以使用以下语法来查找特定字段的值不在特定值列表中的所有文档:

 db.collection.find({field1: { $nin : [" value1 ", " value2 ", " value3 "]}}) 

此特定查询搜索字段 1的值不等于 value1、value2 或 value3 的所有文档。

以下示例展示了如何在实践中使用此语法。

示例 1:查询带有值的“NOT IN”

假设我们有一个收集团队,拥有以下文档:

 db.teams.insertOne({team: " Mavs ", position: " Guard ", points: 31 })
db.teams.insertOne({team: " Spurs ", position: " Guard ", points: 22 })
db.teams.insertOne({team: " Rockets ", position: " Center ", points: 19 })
db.teams.insertOne({team: " Warriors ", position: " Forward ", points: 26 })
db.teams.insertOne({team: " Cavs ", position: " Guard ", points: 33 })

我们可以使用下面的代码来查找“team”字段不等于“Rockets”值的所有文档:

 db.teams.find({team: { $nin : [" Rockets "]}}) 

该查询返回以下文档:

 { _id: ObjectId("619527e467d6742f66749b72"),
  team: 'Cavs',
  position: 'Guard',
  points: 33 }

{ _id: ObjectId("619527e467d6742f66749b6e"),
  team: 'Mavs',
  position: 'Guard',
  points: 31 }

{ _id: ObjectId("619527e467d6742f66749b6f"),
  team: 'Mavs',
  position: 'Guard',
  points: 22 }

请注意,返回的唯一文档是“team”字段不等于“Rockets”的文档。

示例 2:使用值列表查询“NON IN”

假设我们有一个收集团队,拥有以下文档:

 db.teams.insertOne({team: " Mavs ", position: " Guard ", points: 31 })
db.teams.insertOne({team: " Spurs ", position: " Guard ", points: 22 })
db.teams.insertOne({team: " Rockets ", position: " Center ", points: 19 })
db.teams.insertOne({team: " Warriors ", position: " Forward ", points: 26 })
db.teams.insertOne({team: " Cavs ", position: " Guard ", points: 33 })

我们可以使用以下代码来查找“team”字段不等于“Rockets”或“Cavs”值的所有文档:

 db.teams.find({team: { $nin : [" Rockets ", " Cavs "]}}) 

该查询返回以下文档:

 { _id: ObjectId("619527e467d6742f66749b6e"),
  team: 'Mavs',
  position: 'Guard',
  points: 31 }

{ _id: ObjectId("619527e467d6742f66749b6f"),
  team: 'Mavs',
  position: 'Guard',
  points: 22 }

请注意,返回的唯一文档是“team”字段不等于“Rockets”或“Cavs”的文档。

注意:您可以在此处找到$nin函数的完整文档。

其他资源

以下教程解释了如何在 MongoDB 中执行其他常见操作:

MongoDB:如何使用“Like”正则表达式进行查询
MongoDB:如何检查字段是否包含字符串
MongoDB:如何向集合添加新字段
MongoDB:如何从每个文档中删除字段

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注