$操作符在MongoDB中是啥意思?
- 内容介绍
- 文章标签
- 相关推荐
本文共计3188个文字,预计阅读时间需要13分钟。
本译文基于官网v3.4文档整理,包含大量常用操作符,更详细的使用方法请参考官网(戳这里)。水平有限,若发现错误敬请指出,以免误导!
本文基于官网v3.4的文档翻译整理而来,包含了绝大多数常用的操作符,更多详细的使用还请参考官网(戳这里)。本人水平有限,若各位看官发现错误,还望及时留言指出,以免误导!共同学习,共本文基于官网v3.4的文档翻译整理而来,包含了绝大多数常用的操作符,更多详细的使用还请参考官网(戳这里)。本人水平有限,若各位看官发现错误,还望及时留言指出,以免误导!共同学习,共同进步!
1.查询和投影
1.1 比较操作符
$eq
语法:{ : { $eq: } }
释义:匹配等于(=)指定值的文档
举例:
$gt
语法:{: {$gt: } }
释义:匹配大于(>)指定值的文档
$gte
语法:{field: {$gte: value} }
释义:匹配大于等于(>=)指定值的文档
$lt
语法:{field: {$lt: value} }
释义:匹配小于(<)指定值的文档
$lte
语法:{ field: { $lte: value} }
释义:匹配小于等于(<=)指定值的文档
$ne
语法:{field: {$ne: value} }
释义:匹配不等于(≠)指定值的文档
$in
语法:{ field: { $in: [, , ... ] } }
释义:匹配数组中的任一值
举例:
$nin
语法:{ field: { $nin: [ , ... ]} }
释义:不匹配数组中的值
1.2 逻辑操作符
$or
语法:{ $or: [ { }, { }, ... , { } ] }
释义:或 条件查询
举例:
$and
语法:{ $and: [ { }, { } , ... , { } ] }
释义:与 条件查询
$not
语法:{ field: { $not: { } } }
释义:查询与表达式不匹配的文档
举例:
$nor
语法:{ $nor: [ { }, { }, ... { } ] }
释义:查询与任一表达式都不匹配的文档
举例:
1.3 元素操作符
$exists
语法:{ field: { $exists: } }
释义:查询存在指定字段的文档
举例:
$type
语法:{ field: { $type: | } }
释义:查询类型为指定类型的文档,3.2版本添加alias别名,各种类型的Number及Alias如下
举例:
假设存在这样一个集合:
查询该集合中zipCode字段的数据类型为String类型的文档:
1.4 评估操作符(Evaluation,不知道翻译成什么合适,暂且翻译成这样吧)
$mod
语法:{ field: { $mod: [ 除数, 余数 ] } }
释义:取余条件查询
举例:
$regex
语法:
{ : { $regex: /pattern/, $options: '' } }
{ : { $regex: 'pattern', $options: '' } }
{ : { $regex: /pattern/ } }
释义:正则表达式查询
举例:
$text
语法:
- $search ——关键词
- $language ——语言,不支持中文!!!支持语言如下:点击
- $caseSensitive——是否区分大小写,默认false
- $diacriticSensitive——是否区分读音,默认false
释义:文本索引查询
举例:较为复杂,请参考官网
$where
释义:把一个含有Javascript表达式的字符串或者是整个Javascript函数转换到查询系统中,对内嵌文档不起作用
举例:
1.5 Geospatial Query Operators
请参考官网
1.6 数组操作符
$all
语法:{ : { $ all : [ , ... ] } }
释义:匹配文档的数组字段中包含所有指定元素的文档
举例:
$elemMatch(query)
语法:{ : { $elemMatch: { , , ... } } }
释义:匹配内嵌文档或数组中的部分field
举例:
假设现有集合:
查询results数组中含有区间[80,85)元素的文档(结果为第一条):
$size
语法:{ field: { $size: }
释义:匹配数组长度为指定大小的文档
举例:
1.7 Bitwise Query Operators
请参考官网
1.8投影操作符
$(projection)
释义:查询数组中首个匹配条件的元素,相当于findOne()方法
举例:
假设现有如下集合students:
查询semester=1,并且grades中符合大于等于85的元素的第一个元素:
返回如下结果:
$elemMatch(projection)
释义:用于数组或内嵌文档中的元素匹配(子元素匹配),只会返回匹配的第一个元素!!!
举例:
假设现有如下集合:
查询zipcode为63109并且students数组中school=102的文档:
返回如下结果:
$meta
语法:{ $meta: }
释义:请参考官网
$slice(projection)
释义:在查询中将数组进行切片(类似于分页)
举例:
2.更新操作符
2.1 字段更新
$inc
语法:{ $inc: { : , : , ... } }
释义:将文档中的某个field对应的value自增/减某个数字amount
举例:
$mul
语法:{ $mul: { field: } }
释义:将文档中的某个field对于的value做乘法操作
举例:
$rename
语法:{$rename: { : , : , ... } }
释义:重命名文档中的指定字段的名
举例:
$setOnInsert
语法:
db.collection.update( , { $setOnInsert: { : , ... } }, { upsert: true })
释义:配合upsert操作,在作为insert时可以为新文档扩展更多的field
举例:
$set
语法:{ $set: { : , ... } }
释义:更新文档中的某一个字段,而不是全部替换
举例:
假设现有文档:
$unset
语法:{ $unset: { : "", ... } }
释义:删除文档中的指定字段,若字段不存在则不操作
举例:
$min
语法:{ $min: { : , ... } }
释义:将文档中的某字段与指定值作比较,如果原值小于指定值,则不更新;若大于指定值,则更新
举例:
$max
语法:{ $max: { : , ... } }
释义:与$min功能相反
$currentDate
语法:{ $currentDate: { : , ... } }
释义:设置指定字段为当前时间
举例:
2.2 数组更新
$(update)
语法:{ ".$" : value }
释义:请参考官网
$addToSet
语法:{ $ addToSet : { : , ... } }
释义:用于添加一个元素到array中,一般用于update
举例:
$pop
语法:{ $pop: { : , ... } }
释义:删除数组中的第一个或最后一个元素,-1表示第一个,没错,第一个;1表示最后一个!
举例:
$pullAll
语法:{ $pullAll: { : [ , ... ], ... } }
释义:删除数组或内嵌文档字段中所有指定的元素
举例:
$pull
语法:{ $pull: { : , : , ... } }
释义:删除满足条件的元素
举例:
更多用法及实例,请参考官网
$pushAll
释义:自v2.4开始,方法弃用,请使用$push和$each来配合实现
$push
语法:{ $push: { : , ... } }
释义:往数组中追加指定的元素,若文档中数组不存在,则创建并添加指定元素,自v2.4起,添加了对$.each的支持
举例:
$each
语法:
释义:需要搭配$addToSet或$push方可使用
$sort
语法:
释义:自v2.4加,配合$push使用,表示给文档中的指定数组元素排序,1是升序,-1是降序
举例:
$position
语法:
释义:自v2.6加,配合$push使用表示往数组元素中的指定位置插入元素
转载:blog.csdn.net/yisun123456/article/details/78591255
本文共计3188个文字,预计阅读时间需要13分钟。
本译文基于官网v3.4文档整理,包含大量常用操作符,更详细的使用方法请参考官网(戳这里)。水平有限,若发现错误敬请指出,以免误导!
本文基于官网v3.4的文档翻译整理而来,包含了绝大多数常用的操作符,更多详细的使用还请参考官网(戳这里)。本人水平有限,若各位看官发现错误,还望及时留言指出,以免误导!共同学习,共本文基于官网v3.4的文档翻译整理而来,包含了绝大多数常用的操作符,更多详细的使用还请参考官网(戳这里)。本人水平有限,若各位看官发现错误,还望及时留言指出,以免误导!共同学习,共同进步!
1.查询和投影
1.1 比较操作符
$eq
语法:{ : { $eq: } }
释义:匹配等于(=)指定值的文档
举例:
$gt
语法:{: {$gt: } }
释义:匹配大于(>)指定值的文档
$gte
语法:{field: {$gte: value} }
释义:匹配大于等于(>=)指定值的文档
$lt
语法:{field: {$lt: value} }
释义:匹配小于(<)指定值的文档
$lte
语法:{ field: { $lte: value} }
释义:匹配小于等于(<=)指定值的文档
$ne
语法:{field: {$ne: value} }
释义:匹配不等于(≠)指定值的文档
$in
语法:{ field: { $in: [, , ... ] } }
释义:匹配数组中的任一值
举例:
$nin
语法:{ field: { $nin: [ , ... ]} }
释义:不匹配数组中的值
1.2 逻辑操作符
$or
语法:{ $or: [ { }, { }, ... , { } ] }
释义:或 条件查询
举例:
$and
语法:{ $and: [ { }, { } , ... , { } ] }
释义:与 条件查询
$not
语法:{ field: { $not: { } } }
释义:查询与表达式不匹配的文档
举例:
$nor
语法:{ $nor: [ { }, { }, ... { } ] }
释义:查询与任一表达式都不匹配的文档
举例:
1.3 元素操作符
$exists
语法:{ field: { $exists: } }
释义:查询存在指定字段的文档
举例:
$type
语法:{ field: { $type: | } }
释义:查询类型为指定类型的文档,3.2版本添加alias别名,各种类型的Number及Alias如下
举例:
假设存在这样一个集合:
查询该集合中zipCode字段的数据类型为String类型的文档:
1.4 评估操作符(Evaluation,不知道翻译成什么合适,暂且翻译成这样吧)
$mod
语法:{ field: { $mod: [ 除数, 余数 ] } }
释义:取余条件查询
举例:
$regex
语法:
{ : { $regex: /pattern/, $options: '' } }
{ : { $regex: 'pattern', $options: '' } }
{ : { $regex: /pattern/ } }
释义:正则表达式查询
举例:
$text
语法:
- $search ——关键词
- $language ——语言,不支持中文!!!支持语言如下:点击
- $caseSensitive——是否区分大小写,默认false
- $diacriticSensitive——是否区分读音,默认false
释义:文本索引查询
举例:较为复杂,请参考官网
$where
释义:把一个含有Javascript表达式的字符串或者是整个Javascript函数转换到查询系统中,对内嵌文档不起作用
举例:
1.5 Geospatial Query Operators
请参考官网
1.6 数组操作符
$all
语法:{ : { $ all : [ , ... ] } }
释义:匹配文档的数组字段中包含所有指定元素的文档
举例:
$elemMatch(query)
语法:{ : { $elemMatch: { , , ... } } }
释义:匹配内嵌文档或数组中的部分field
举例:
假设现有集合:
查询results数组中含有区间[80,85)元素的文档(结果为第一条):
$size
语法:{ field: { $size: }
释义:匹配数组长度为指定大小的文档
举例:
1.7 Bitwise Query Operators
请参考官网
1.8投影操作符
$(projection)
释义:查询数组中首个匹配条件的元素,相当于findOne()方法
举例:
假设现有如下集合students:
查询semester=1,并且grades中符合大于等于85的元素的第一个元素:
返回如下结果:
$elemMatch(projection)
释义:用于数组或内嵌文档中的元素匹配(子元素匹配),只会返回匹配的第一个元素!!!
举例:
假设现有如下集合:
查询zipcode为63109并且students数组中school=102的文档:
返回如下结果:
$meta
语法:{ $meta: }
释义:请参考官网
$slice(projection)
释义:在查询中将数组进行切片(类似于分页)
举例:
2.更新操作符
2.1 字段更新
$inc
语法:{ $inc: { : , : , ... } }
释义:将文档中的某个field对应的value自增/减某个数字amount
举例:
$mul
语法:{ $mul: { field: } }
释义:将文档中的某个field对于的value做乘法操作
举例:
$rename
语法:{$rename: { : , : , ... } }
释义:重命名文档中的指定字段的名
举例:
$setOnInsert
语法:
db.collection.update( , { $setOnInsert: { : , ... } }, { upsert: true })
释义:配合upsert操作,在作为insert时可以为新文档扩展更多的field
举例:
$set
语法:{ $set: { : , ... } }
释义:更新文档中的某一个字段,而不是全部替换
举例:
假设现有文档:
$unset
语法:{ $unset: { : "", ... } }
释义:删除文档中的指定字段,若字段不存在则不操作
举例:
$min
语法:{ $min: { : , ... } }
释义:将文档中的某字段与指定值作比较,如果原值小于指定值,则不更新;若大于指定值,则更新
举例:
$max
语法:{ $max: { : , ... } }
释义:与$min功能相反
$currentDate
语法:{ $currentDate: { : , ... } }
释义:设置指定字段为当前时间
举例:
2.2 数组更新
$(update)
语法:{ ".$" : value }
释义:请参考官网
$addToSet
语法:{ $ addToSet : { : , ... } }
释义:用于添加一个元素到array中,一般用于update
举例:
$pop
语法:{ $pop: { : , ... } }
释义:删除数组中的第一个或最后一个元素,-1表示第一个,没错,第一个;1表示最后一个!
举例:
$pullAll
语法:{ $pullAll: { : [ , ... ], ... } }
释义:删除数组或内嵌文档字段中所有指定的元素
举例:
$pull
语法:{ $pull: { : , : , ... } }
释义:删除满足条件的元素
举例:
更多用法及实例,请参考官网
$pushAll
释义:自v2.4开始,方法弃用,请使用$push和$each来配合实现
$push
语法:{ $push: { : , ... } }
释义:往数组中追加指定的元素,若文档中数组不存在,则创建并添加指定元素,自v2.4起,添加了对$.each的支持
举例:
$each
语法:
释义:需要搭配$addToSet或$push方可使用
$sort
语法:
释义:自v2.4加,配合$push使用,表示给文档中的指定数组元素排序,1是升序,-1是降序
举例:
$position
语法:
释义:自v2.6加,配合$push使用表示往数组元素中的指定位置插入元素
转载:blog.csdn.net/yisun123456/article/details/78591255

