MongoDB学习(七)$操作符表达式⼤全及实例
写在前⾯
本⽂基于官⽹v3.4的⽂档翻译整理⽽来,包含了绝⼤多数常⽤的操作符,更多详细的使⽤还请参考官⽹()。本⼈⽔平有限,若各位看官发现错误,还望及时留⾔指出,以免误导!共同学习,共同进步!
1.查询和投影
1.1 ⽐较操作符
$eq
语法:{ <field>: { $eq: <value> } }
释义:匹配等于(=)指定值的⽂档
举例:
查询age=20的⽂档:
db.person.find( { age: { $eq: 20 } } )
相当于:
db.person.find( { age: 20 } )
$gt
语法:{<field>: {$gt: <value>} }
释义:匹配⼤于(>)指定值的⽂档
$gte
语法:{field: {$gte: value} }
释义:匹配⼤于等于(>=)指定值的⽂档
$lt
语法:{field: {$lt: value} }
释义:匹配⼩于(<)指定值的⽂档
$lte
语法:{ field: { $lte: value} }
释义:匹配⼩于等于(<=)指定值的⽂档
$ne
语法:{field: {$ne: value} }
释义:匹配不等于(≠)指定值的⽂档
$in
语法:{ field: { $in: [<value1>, <value2>, ... <valueN> ] } }
释义:匹配数组中的任⼀值
举例:
查询该集合中字段qty的值与数组中的任意值相等的⽂档:
db.inventory.find( { qty: { $in: [ 5, 15 ] } } )
$nin
语法:{ field: { $nin: [ <value1>, <value2> ... <valueN> ]} }
释义:不匹配数组中的值
1.2 逻辑操作符
$or
语法:{ $or: [ { <expression1> }, { <expression2> }, ... , { <expressionN> } ] }释义:或 条件查询
举例:
查询age<20或者address是beijing的⽂档:
db.person.find( { $or: [ { age: { $lt: 20 } }, { address: "beijing" } ] } )
$and
语法:{ $and: [ { <expression1> }, { <expression2> } , ... , { <expressionN> } ] }释义:与 条件查询
$not
语法:{ field: { $not: { <operator-expression> } } }
释义:查询与表达式不匹配的⽂档
举例:
查询age不⼤于20的⽂档:
db.person.find( { age: { $not: { $gt: 20 } } } )
$nor
语法:{ $nor: [ { <expression1> }, { <expression2> }, ... { <expressionN> } ] }释义:查询与任⼀表达式都不匹配的⽂档
举例:
查询age既不等于20,sex也不是男的⽂档:
db.person.find( { $nor: [ { age: 20 },{ sex: "男"} ] } )
1.3 元素操作符
$exists
语法:{ field: { $exists: <boolean> } }
释义:查询存在指定字段的⽂档
举例:
查询存在phone字段的⽂档:
db.person.find( { phone: { $exists: true } } )
$type
语法:{ field: { $type: <BSON type number> | <String alias> } }
释义:查询类型为指定类型的⽂档,3.2版本添加alias别名,各种类型的Number及Alias如下
举例:
假设存在这样⼀个集合:
{ "_id": 1, address: "2030 Martian Way",zipCode: "90698345"},
{ "_id": 2, address: "156 Lunar Place",zipCode: 43339374},
{ "_id": 3, address: "2324 Pluto Place",zipCode: NumberLong(3921412)},
{ "_id": 4, address: "55 Saturn Ring", zipCode: NumberInt(88602117)}
查询该集合中zipCode字段的数据类型为String类型的⽂档:
db.addressBook.find( { "zipCode" : { $type : 2 } } );
db.addressBook.find( { "zipCode" : { $type : "string" } } );
1.4 评估操作符(Evaluation,不知道翻译成什么合适,暂且翻译成这样吧)$mod
语法:{ field: { $mod: [ 除数, 余数 ] } }
释义:取余条件查询
举例:
查询age字段的值除以2余0的⽂档:
db.person.find( { age: { $mod: [ 2, 0 ] } } )
$regex
语法:
{ <field>: { $regex: /pattern/, $options: '<options>' } }
{ <field>: { $regex: 'pattern', $options: '<options>' } }
{ <field>: { $regex: /pattern/<options> } }
释义:正则表达式查询
举例:
db.products.find( { sku: { $regex: /^ABC/i } } )
$text
语法:
{
$text: {
$search: <string>,
$language: <string>,
$caseSensitive: <boolean>,
$diacriticSensitive: <boolean>
}
}
$search ——关键词
$language ——语⾔,不⽀持中⽂⽀持语⾔如下:
$caseSensitive——是否区分⼤⼩写,默认false
$diacriticSensitive——是否区分读⾳,默认false
释义:⽂本索引查询
举例:较为复杂,请参考官⽹
$where
释义:把⼀个含有JavaScript表达式的字符串或者是整个JavaScript函数转换到查询系统中,对内嵌⽂档不起作⽤举例:
1.5 Geospatial Query Operators
请参考官⽹
1.6 数组操作符
$all
语法:{ < field >: { $ all : [ < value1 > , < value2 > ... ] } }
释义:匹配⽂档的数组字段中包含所有指定元素的⽂档
举例:
查询articles集合中tags字段(是个数组)包含“ssl”和“security”的⽂档(包含,但并不是全部等于)
db.articles.find( { tags: { $all: [ [ "ssl", "security" ] ] } } )
$elemMatch(query)
语法:{ <field>: { $elemMatch: { <query1>, <query2>, ... } } }
update语法大全释义:匹配内嵌⽂档或数组中的部分field
举例:
假设现有集合:
{ _id: 1, results: [ 82, 85, 88 ] }
{ _id: 2, results: [ 75, 88, 89 ] }
查询results数组中含有区间[80,85)元素的⽂档(结果为第⼀条):
db.scores.find( { results: { $elemMatch: { $gte: 80, $lt: 85 } } })
$size
语法:{ field: { $size: <number> }
释义:匹配数组长度为指定⼤⼩的⽂档
举例:
查询已经集齐了5张福卡的⽂档:
db.person.find({card:{$size:5}})
1.7 Bitwise Query Operators
请参考官⽹
1.8投影操作符

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。