Mongodb $nin操作符

Posted by 撒得一地 on 2016年3月30日 in Mongodb教程

$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 操作符

本文地址:http://coderschool.cn/1762.html

上一篇:

下一篇:

相关推荐

网站地图|XML地图

Copyright © 2015-2024 技术拉近你我! All rights reserved.
闽ICP备15015576号-1 版权所有©psz.