MongoDB $nin 运算符

MongoDB $nin 运算符 介绍

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

MongoDB $nin 运算符 语法

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

MongoDB $nin 运算符 例子

假设我们有一个包含以下文档的产品集合。

{  
  {   
   "_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 运算符更新数据

在此示例中,我们使用带有 $nin 和 $set 运算符的 update() 方法来更新 product_name 不是 Shirt、T-Shirt、Shorts、Jeans 或 CottonShorts 的文档中的“sizes”字段。

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

输出结果为:

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

 

热门文章

优秀文章