MongoDB $nin运算符

MongoDB $nin运算符

什么是MongoDB中的$nin运算符

MongoDB提供了各种比较查询运算符。nin(不在)运算符是这些运算符之一。nin运算符用于选择字段的值不等于数组中任何给定值的文档。

$nin运算符的语法

{ field : { $nin : [ < value 1 >, < value 2 > ... < value n >  ] } }

示例

假设我们有以下文档的产品集合。

{
  { 
   "_id" : 1, 
   "product_name" : "Shirt", 
   "sizes" : [ "S", "M", "XL", "XXL" ] 
  }
  {  
   "_id" : 2, 
   "product_name" : "T-Shirt", 
   "sizes" : [ "S", "L", "XL" ] 
  }
  { 
   "_id" : 3, 
   "product_name" : "Shorts", 
   "sizes" : [ "XS", "S", "M", "L", "XL" ] 
  }
  { 
   "_id" : 4, 
   "product_name" : "Jeans", 
   "sizes" : "L" 
  }
  { 
   "_id" : 5, 
   "product_name" : "CottonShirts", 
   "sizes" : null 
  }
  { 
   "_id" : 6, 
   "product_name" : "CottonShorts" 
  }
}

示例1:使用$nin操作符

在这个示例中,我们只检索那些没有特定_id值(4、 5和6)的产品文档。

db.products.find ( { 
  _id : { $nin : [ 4, 5, 6 ] } 
} )

输出结果:

{ 
   "_id" : 1, 
   "product_name" : "Shirt", 
   "sizes" : [ "S", "M", "XL", "XXL" ] 
}
{  
   "_id" : 2, 
   "product_name" : "T-Shirt", 
   "sizes" : [ "S", "L", "XL" ] 
}
{ 
   "_id" : 3, 
   "product_name" : "Shorts", 
   "sizes" : [ "XS", "S", "M", "L", "XL" ] 
}

示例2:另一个字段

在这个示例中,我们将使用$nin运算符来比较另一个字段。

db.products.find ( { 
  sizes : { $nin : [ "XXL" ] } 
} )

输出:

{  
   "_id" : 2, 
   "product_name" : "T-Shirt", 
   "sizes" : [ "S", "L", "XL" ] 
}
{ 
   "_id" : 3, 
   "product_name" : "Shorts", 
   "sizes" : [ "XS", "S", "M", "L", "XL" ] 
}
{ 
   "_id" : 4, 
   "product_name" : "Jeans", 
   "sizes" : "L" 
}
{ 
   "_id" : 5, 
   "product_name" : "CottonShirts", 
   "sizes" : null 
}
{ 
   "_id" : 6, 
   "product_name" : "CottonShorts" 
}

示例3: 使用$nin操作符与正则表达式

db.products.find ( { 
  sizes : { $nin : [ /^X/ ] } 
} )

输出:

{ 
   "_id" : 4, 
   "product_name" : "Jeans", 
   "sizes" : "L" 
}
{ 
   "_id" : 5, 
   "product_name" : "CottonShirts", 
   "sizes" : null 
}
{ 
   "_id" : 6, 
   "product_name" : "CottonShorts" 
}

示例4:使用$nin操作符更新数据

在这个示例中,我们使用了update()方法和nin和set操作符来更新”sizes”字段,更新的对象为product_name不是Shirt、T-Shirt、Shorts、Jeans或CottonShorts的文档。

db.products.update({ 
       product_name : { nin: ["Shirt", "T-Shirt", "Shorts", "Jeans", "CottonShorts"] }},
       {set : { sizes : 40 }})

输出:

{ 
   "_id" : 5, 
   "product_name" : "CottonShirts", 
   "sizes" : 40 
}

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程