在下表中提供了每个查询运算符的含义,示例用法,以及适用的SQL等价词*
将上表的查询运算符可以细化为以下几类查询运算符:
比较查询运算符
$gt 匹配大于指定值的值
$lt 匹配小于指定值的值
$gte 匹配大于或等于指定值的值
$lte 匹配小于或等于指定值的值
$ne 匹配所有不等于指定值的值
$nin 匹配数组中不在某一范围内的值
$in 匹配数组中在某一范围内的值
$gt
含义:匹配大于指定值的值
例句:db.getCollection(‘student’).find({‘age’:{’$gt’:20}})
例句解释:查询student表中学生年龄大于20的表项
$lt
含义:匹配小于指定值的值
例句:db.getCollection(‘student’).find({‘age’:{’$lt’:20}})
例句解释:查询student表中学生年龄小于20的表项
$gte
含义:匹配大于或等于指定值的值
例句:db.getCollection(‘student’).find({‘age’:{’$gte’:22}})
例句解释:查询student表中学生年龄大于或等于22的表项
$lte
含义:匹配小于或等于指定值的值
例句:db.getCollection(‘student’).find({‘age’:{’$lte’:20}})
例句解释:查询student表中学生年龄小于或等于20的表项
$ne
含义:匹配所有不等于指定值的值
例句:db.getCollection(‘student’).find({‘age’:{’$ne’:20}})
例句解释:查询student表中学生年龄不等于20的表项
$nin
含义:匹配数组中不在某一范围内的值
例句:db.getCollection(‘student’).find({‘e_year’:{’$nin’: [2015, 2017]}})
例句解释:查询student表中学生入学年份不在2015到2017这个范围内的表项
$in
含义:匹配数组中在某一范围内的值
例句:db.getCollection(‘student’).find({‘age’:{’$in’: [20, 23]}})
例句解释:查询student表中学生年龄在20到23这个范围内的年龄
逻辑查询运算符
$nor 使用逻辑连接查询子句NOR将返回所有无法匹配两个子句的文档。
$or 使用逻辑连接查询子句OR将返回与任一子句的条件匹配的所有文档。
$nor
含义:使用逻辑连接查询子句NOR将返回所有无法匹配两个子句的文档。
语法:{ $nor: [ { }, { }, … , { } ] }
例句:db.student.find( { $nor: [ { age: { $lt: 20 } }, { major: “software engineering” } ] } )
例句解释:查询表中学生年龄大于等于20且专业非软件工程的学生
$or
含义:使用逻辑连接查询子句OR将返回与任一子句的条件匹配的所有文档。
语法:{ $or: [ { }, { }, … , { } ] }
例句:db.student.find({ $or: [ { age: { $lte: 20 } }, { major:“software engineering” } ] } )
例句解释:查询表中学生年龄小于等于20岁或者专业为软件工程的学生
数组查询运算符
$all
匹配那些指定键的键值中包含数组,而且该数组包含条件指定数组的所有元素的文档
含义:匹配那些指定键的键值中包含数组,而且该数组包含条件指定数组的所有元素的文档。
语法: { field: { $all: [ , … ] }
注:field:文档中键的名称(不使用双引号)。
例句1:db.student.find( {major: { $all: [ “software engineering”, “financial” ] } } )
例句解释:查询出在集合student中 major键值数组中包含 “software engineering”, "financial"元素的所有表项 (查找出专业为软件工程和金融的学生)
例句2:db.student.find( {position: { $all: [ ‘captain’,‘grouper’] } } )
例句解释:查询出在集合student中 position键值数组中包含 “captain”, "grouper"元素的所有表项 (查找职位中担任过队长、组长的学生)
$size
含义:如果数组字段是指定大小,则选择键值(数组)大小为指定字段的表项
例句:db.student.find({“position”:{"$size":1}})
例句解释:查询集合student中数组position长度为1的所有表项(查找只担任了一项职位的学生)
元素查询运算符
$exists 匹配具有指定字段的文档
含义:
当boolean为true,操作符匹配包含字段的文档,包括字段值为null的表
当boolean为false,操作符返回不包含对应字段的表项
语法:{ field: { $exists: } }
例句:db.student.find( { sex: { $exists: true } } )
例句解释:查询包含性别字段的表项
我在建表的时候,只给部分表项添加了性别sex的字段
然后用改操作符可以查出只含性别的表项