MongoDB提供了不同类型的比较查询运算符,而$ nin (非in)运算符就是其中之一。该运算符用于选择字段值不等于数组中给定值和不存在的字段的那些文档。
如果该字段包含一个数组,则此运算符仅选择那些其字段包含一个数组的文档,这些文档不包含与指定数组的值匹配的项。您可以根据需要在find()
, update()
等方法中使用此运算符。
句法:
{field: {$nin: [value1, value2, value3, ...]}}
In the following examples, we are working with:
Database: GeeksforGeeks
Collection: contributor
Document: three documents that contain the details of the contributors in the form of field-value pairs.
使用$nin
运算符匹配值:
在此示例中,我们仅检索名称不是Amit或Suman的那些雇员的文档。
db.contributor.find({name: {$nin: ["Amit", "Suman"]}}).pretty()
使用$nin
运算符匹配数组中的值:
在此示例中,我们仅检索那些不使用C#, Python或不使用两种语言的员工文档。
db.contributor.find({language: {$nin: ["C#", "Python"]}}).pretty()
使用$nin
运算符匹配嵌入/嵌套文档中的值:
在此示例中,我们仅检索年龄不超过25岁或22岁的那些雇员的文档。
db.contributor.find({"personal.age": { $nin: [25, 22]}}).pretty()
使用$nin
运算符更新数据:
在此示例中,我们通过使用带有$in
和$set
运算符的update()方法, $in
名称不是Amit或Priya的那些雇员的文档中添加了一个新的字段值对(即薪水:10000)。
db.contributor.update({name: {$nin: ["Amit", "Priya"]}},
{$set: {salary: 1000}})
注意:默认情况下, update()
方法一次仅更新一个文档。如果要更新多个文档,则将其multi参数的值设置为true。因此,在此示例中, update()
方法更新了与给定条件匹配的第一个文档,如下图所示。