Mongodb $nin操作符
Posted by 撒得一地 on 2016年3月30日 in Mongodb教程
上一篇: Mongodb $in操作符
下一篇: Mongodb $elemMatch操作符
下一篇: Mongodb $elemMatch操作符
$nin操作符
语法
{ field: { $nin: [value1,value2 ... valueN]} }
说明
$nin 顾名思义即not in,$nin 操作符输出符合以下条件的文档:
field字段的值不在指定数组[value1,value2 … valueN]内 或
field字段在文档中根本不存在。
首先先看一个查询语句:
db.inventory.find( { qty: { $nin: [ 5, 15 ] } } )
上面这个查询输出inventory数据库文档中qty字段的值既不等于5也不等于15的文档,没有qty这个字段的文档同样也会被输出。
当field字段是一个数组时,那么 $nin 操作符将输出满足这样条件的文档,即在field数组中的任意一个元素都不在[value1,value2 … valueN]这个指定数组内。
再看一个查询:
db.test.update({tags:{$nin:["appli","school"]}},{$set:{sale:false}})
上面这个实例,假设test数据库包含的文档中 tags 是个数组,那么当 tags 字段里面的元素的值都不在[“appli”,”school”]这个数组中,或者文档中根本没有 tags 这个字段,则将用 update 更新操作符将文档中的 sale 设置为false。
实例,输出age不在[22,23,24]数组内的文档,如:
>db.test.find() {"_id":1,"name":"psz","age":22} {"_id":1,"name":"psz1","age":21} >db.test.find({age:{$nin:[22,23,24]}}) {"_id":1,"name":"psz1","age":21}
不等于操作符 $nin 不是非常具有可选性,因为它经常用在索引很大(需要输出全部匹配记录)的情况下。因此,在许多情况中,当仅仅只要满足一条记录查询时,效率远远比不上需要输出数据库中全部文档这样的查询操作。
与 $nin 操作符相对的是 $in 操作符。
上一篇: Mongodb $in操作符
下一篇: Mongodb $elemMatch操作符
下一篇: Mongodb $elemMatch操作符