最近常用mongodb数据库,但是很多操作符不清楚或不知道,所有抽空根据手册整理下,以便于以后查阅(基于3.4版本)
1.查询和投影操作符
1.1比较操作符
$eq
匹配字段值等于指定值的文档
$gt
匹配字段值大于指定值的文档
$gte
匹配字段值大于等于指定值的文档
$lt
匹配字段值小于指定值的文档
$lte
匹配字段值小于等于指定值的文档
$ne
匹配字段值不等于指定值的文档,包括没有这个字段的文档
$in
匹配字段值等于指定数组中的任何值
字段值为数组类型时,数组中至少有一个元素在指定数组中
$nin
字段值不在指定数组或者不存在
字段值为数组类型时,数组中没有一个元素与指定数组中元素相等
1.2逻辑操作符
$or
文档至少满足其中的一个表达式
$and
$not
字段值不匹配表达式或者字段值不存在
$nor
字段值不匹配所有的表达式的文档,包括那些不包含这些字段的文档
1.3元素操作符
$exists
$type
匹配字段值为指定数据类型的文档
举例如下:
1.4评估操作符
$mod
匹配字段值被除有指定的余数的文档
$regex
正则表达式可以匹配到的文档
$text
针对创建了全文索引的字段进行文本搜索
$where
可以通过js表达式或js函数来查询文档
1.5数组操作符
$all
字段值是包含所有指定元素的数组的文档
举例如下:
$elemMatch
数组字段至少一个元素满足所有指定查询条件的文档
$size
匹配数组字段元素个数等于指定数量的文档
1.6投影操作符
$ (projection)
限定查询结果中指定数组字段返回满足条件的第一个元素
举例如下:
$elemMatch (projection)
限定查询结果中指定数组字段返回满足条件的第一个元素
举例如下:
$slice (projection)
控制指定数组字段返回元素个数
2.更新操作符
2.1字段更新
$inc
给一个字段增加指定值
$mul
$rename
$setOnInsert
upsert为true时,有插入文档操作时插入指定字段值
$set
$unset
删除指定字段
$min
指定值小于当前值则更新为指定值
$max
指定值大于当前值则更新为指定值
$currentDate
设置字段值为当前日期
指定值为true设置为当前日期, 或者{ $type: “timestamp” }或{ $type: “date” }的形式”timestamp”和”date”必须是小写的
2.2数组更新
$
更新指定数组的第一个元素
$addToSet
数组字段增加一个值
$pop
删除数组字段中的第一个或最后一个元素
$pullAll
删除数组字段中所有指定值,如果指定值为数组,则删除匹配数组内的元素
$pull
符合条件的值将被删除
$pushAll
向数组中追加多个指定值
$push
向数组中追加值
$each
用于 $addToSet添加多个值到数组中
追加多个值到数组中
$slice
限定push操作时数组元素的个数
必须和each一起使用
$sort
与$each一起使用
$position
与$each一起使用
3.聚合管道操作符
$project
管道中字段的增加、删除和重命名
$match
$limit
$skip
$unwind
文档按照数组字段进行拆分
举例如下:
$group
举例如下
$sort
$lookup
两个集合之间的关联