最近常用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
两个集合之间的关联

$count


