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
}