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
}
热门文章
优秀文章