mongo的$nin
在MongoDB中,$nin
操作符用于查询不在指定值列表中的文档。它可以与find()方法一起使用来过滤不符合条件的文档。
语法
$nin
操作符的语法如下:
{ field: { $nin: [value1, value2, ...] } }
其中,field是要匹配的字段名,value1, value2等是要排除的值。
示例
假设我们有一个名为students的集合,其中存储了学生的成绩数据。我们希望查询出不及格(成绩小于60)且不是特定几个班级的学生信息。
首先,我们可以插入一些示例数据:
db.students.insertMany([
{ name: '张三', grade: 59, class: 'A' },
{ name: '李四', grade: 70, class: 'B' },
{ name: '王五', grade: 55, class: 'C' },
{ name: '赵六', grade: 65, class: 'D' },
{ name: '孙七', grade: 45, class: 'A' }
])
然后,我们可以使用$nin
操作符进行查询:
db.students.find({ grade: { nin: [60], class: {nin: ['A', 'B'] } } })
运行该查询,我们将得到符合条件的文档:
{ "_id" : ObjectId("12345"), "name" : "王五", "grade" : 55, "class" : "C" }
{ "_id" : ObjectId("67890"), "name" : "赵六", "grade" : 65, "class" : "D" }
在上面的示例中,我们使用$nin
操作符过滤了成绩小于60且不是A、B班级的学生信息。只有王五和赵六符合条件,因此它们被查询出来。
注意事项
$nin
操作符可以用于任何类型的字段值,包括字符串、数字、数组等。- 可以使用多个
$nin
操作符组合查询条件,实现更灵活的筛选。
总的来说,$nin
操作符是MongoDB中非常有用的一种筛选方式,可以方便地过滤不符合条件的文档。在实际应用中,可以根据具体需求合理地运用$nin
操作符来实现数据的筛选和查询。