1-MongoDB - 数据类型和运算符

before

mongodb3.6.12

为了更好的学习MongoDB的CURD操作,这里先学习MongoDB中的常用运算符和常用的数据类型。

数据类型

Type 描述
ObjectID 用于存储文档的ID,相当于主键
String 字符串是最常用的数据类型,MongoDB中的字符串必须是UTF-8编码
Symbol 与字符串用法相同,常用于某些使用特殊符号的语言
Integer 整数类型用于存储数值,整数可以是32位,也可以是64位,这取决于你的系统
Double MongoDB将所有浮点类型的数据以双精度类型进行存储
Boolean 布尔类型用于存储布尔值(小写的true和false)
Arrays 将数组、列表或多个值存储到一个键
Timestamp 时间戳时间,用于记录文档何时被修改或创建
Object 用于嵌入文档中,相当于嵌套结构是另一个json
Null 空值,相当于Python中的None
Binary data 二进制数据
Code 用于将JavaScript代码存储到文档中
Regular expression 正则表达式

Operator

更多运算符参考官档:https://docs.mongodb.com/v3.6/reference/operator/

在MongoDB的CURD中,运算符无处不在,这里将列出常用的运算符,便于查找。

以下整理自MongoDB3.6版本的官档手册:https://docs.mongodb.com/v3.6/reference/operator/

查询和投影运算符

比较查询运算符

https://docs.mongodb.com/manual/reference/operator/query/#comparison

名称 描述
$eq 匹配等于指定值的值。
$gt 匹配大于指定值的值。
$gte 匹配大于或等于指定值的值。
$in 匹配数组中指定的任何值。
$lt 匹配小于指定值的值。
$lte 匹配小于或等于指定值的值。
$ne 匹配所有不等于指定值的值。
$nin 不匹配数组中指定的任何值。

逻辑查询运算符

https://docs.mongodb.com/manual/reference/operator/query/#logical

名称 描述
$and 用逻辑联接查询子句AND返回与两个子句条件都匹配的所有文档。
$not 反转查询表达式的效果,并返回与查询表达式匹配的文档。
$nor 用逻辑联接查询子句NOR将返回两个子句均不匹配的所有文档。
$or 用逻辑联接查询子句OR将返回符合任一子句条件的所有文档。

元素查询运算符

https://docs.mongodb.com/manual/reference/operator/query/#element

名称 描述
$exists 匹配具有指定字段的文档。
$type 如果字段是指定类型,则选择文档。

评估查询运算符

https://docs.mongodb.com/manual/reference/operator/query/#evaluation

名称 描述
$expr 允许在查询语言中使用聚合表达式。
$jsonSchema 根据给定的JSON Schema验证文档。
$mod 对字段的值执行模运算,并选择具有指定结果的文档。
$regex 选择值与指定的正则表达式匹配的文档。
$text 执行文本搜索。
$where 匹配满足JavaScript表达式的文档。

地理空间查询运算符

https://docs.mongodb.com/manual/reference/operator/query/#geospatial

名称 描述
$geoIntersects 选择与GeoJSON几何相交的几何。该2dsphere索引支持 $geoIntersects
$geoWithin 选择边界GeoJSON几何内的几何。该2dsphere2D指标支持 $geoWithin
$near 返回点附近的地理空间对象。需要地理空间索引。该2dsphere2D指标支持 $near
$nearSphere 返回球体上某个点附近的地理空间对象。需要地理空间索引。该2dsphere2D指标支持 $nearSphere

数组查询运算符

https://docs.mongodb.com/manual/reference/operator/query/#array

名称 描述
$all 匹配包含查询中指定的所有元素的数组。
$elemMatch 如果array字段中的元素符合所有指定$elemMatch条件,则选择文档。
$size 如果数组字段为指定大小,则选择文档。

按位查询运算符

https://docs.mongodb.com/v3.6/reference/operator/query/#bitwise

名称 描述
$bitsAllClear 匹配其中一组位位置的数值或二进制值具有值0
$bitsAllSet 匹配其中一组位位置的数值或二进制值具有值1
$bitsAnyClear 匹配数字或二进制值,其中一组位位置中的任何位的值为0
$bitsAnySet 匹配数字或二进制值,其中一组位位置中的任何位的值为1

评论

https://docs.mongodb.com/v3.6/reference/operator/query/#comments

名称 描述
$comment 向查询谓词添加注释。

投影运算符

https://docs.mongodb.com/v3.6/reference/operator/query/#projection-operators

名称 描述
$ 在与查询条件匹配的数组中投影第一个元素。
$elemMatch 投影与指定$elemMatch条件匹配的数组中的第一个元素。
$meta 投影$text操作期间分配的文档分数。
$slice 限制从数组投影的元素数量。支持跳过和限制切片。

更新运算符

字段更新运算符

https://docs.mongodb.com/v3.6/reference/operator/update-field/#field-update-operators

名称 描述
$currentDate 将字段的值设置为当前日期(日期或时间戳)。
$inc 将字段的值增加指定的数量。
$min 仅当指定值小于现有字段值时才更新该字段。
$max 仅当指定值大于现有字段值时才更新该字段。
$mul 将字段的值乘以指定的数量。
$rename 重命名字段。
$set 设置文档中字段的值。
$setOnInsert 如果更新导致插入文档,则设置字段的值。对修改现有文档的更新操作没有影响。
$unset 从文档中删除指定的字段。

数组更新运算符

https://docs.mongodb.com/v3.6/reference/operator/update-array/#array-update-operators

名称 描述
$ 充当占位符,以更新与查询条件匹配的第一个元素。
$[] 充当占位符,以更新匹配查询条件的文档的数组中的所有元素。
$[<identifier>] 充当占位符,以更新arrayFilters与查询条件匹配的文档中所有与条件匹配的元素。
$addToSet 仅当元素不存在于集合中时才将它们添加到数组中。
$pop 删除数组的第一项或最后一项。
$pull 删除与指定查询匹配的所有数组元素。
$push 将项目添加到数组。
$pullAll 从数组中删除所有匹配的值。
$each 修改$push$addToSet运算符以附加多个项以进行数组更新。
$position 修改$push运算符以指定要添加元素的数组中的位置。
$slice 修改$push运算符以限制更新数组的大小。
$sort 修改$push运算符以对存储在数组中的文档重新排序。

按位运算符

https://docs.mongodb.com/v3.6/reference/operator/update-bitwise/#bitwise-update-operator

名称 描述
$bit 执行按位ANDORXOR更新整数值。

聚合运算符

聚合流水线阶段

https://docs.mongodb.com/v3.6/reference/operator/aggregation-pipeline/#aggregation-pipeline-stages

名称 描述
$addFields 将新字段添加到文档。与相似 $project$addFields重塑流中的每个文档;具体而言,通过向输出文档添加新字段,该输出文档既包含输入文档中的现有字段,又包含新添加的字段。
$bucket 根据指定的表达式和存储区边界将传入文档分类为称为存储区的组。
$bucketAuto 根据指定的表达式将传入文档分类为特定数量的组,称为存储桶。自动确定存储区边界,以尝试将文档平均分配到指定数量的存储区中。
$collStats 返回有关集合或视图的统计信息。
$count 返回聚合管道此阶段的文档数计数。
$facet 在同一阶段的同一组输入文档上处理多个聚合管道。支持在一个阶段中创建能够表征多维或多面数据的多面聚合。
$geoNear 根据与地理空间点的接近程度返回有序的文档流。包含 $match$sort$limit用于地理空间数据的功能。输出文档包括附加距离字段,并且可以包括位置标识符字段。
$graphLookup 对集合执行递归搜索。在每个输出文档中,添加一个新的数组字段,其中包含对该文档的递归搜索的遍历结果。
$group 按指定的标识符表达式对输入文档进行分组,并将累加器表达式(如果指定)应用于每个组。消耗所有输入文档,并在每个不同的组中输出一个文档。输出文档仅包含标识符字段,如果指定,还包含累积字段。
$indexStats 返回有关集合中每个索引的使用情况的统计信息。
$limit 将未修改的前n个文档传递到管道,其中n是指定的限制。对于每个输入文档,输出一个文档(对于前n个文档)或零文档(在前n个文档之后)。
$listSessions 列出所有活动时间已经足够长以传播到system.sessions集合的会话。
$lookup 同一数据库中的另一个集合执行左外部 联接,以过滤“联接”集合中的文档以进行处理。
$match 筛选文档流,以仅允许匹配的文档未经修改地传递到下一个管道阶段。 $match使用标准的MongoDB查询。对于每个输入文档,输出一个文档(匹配)或零文档(不匹配)。
$out 将聚合管道的结果文档写入集合。要使用该$out阶段,它必须是管道中的最后一个阶段。
$project 重塑流中的每个文档,例如通过添加新字段或删除现有字段。对于每个输入文档,输出一个文档。
$redact 通过基于文档本身中存储的信息限制每个文档的内容,来重塑流中的每个文档。包含$project和的功能 $match。可用于实施字段级修订。对于每个输入文档,输出一个或零个文档。
$replaceRoot 用指定的嵌入式文档替换文档。该操作将替换输入文档中的所有现有字段,包括该_id字段。指定嵌入在输入文档中的文档,以将嵌入的文档提升到顶层。
$sample 从其输入中随机选择指定数量的文档。
$skip 跳过前n个文档,其中n是指定的跳过编号,并将未修改的其余文档传递到管道。对于每个输入文档,输出零个文档(对于前n个文档)或一个文档(如果在前n个文档之后)。
$sort 通过指定的排序键对文档流重新排序。只有顺序改变;这些文档保持不变。对于每个输入文档,输出一个文档。
$sortByCount 根据指定表达式的值对传入文档进行分组,然后计算每个不同组中的文档数。
$unwind 从输入文档中解构数组字段,以输出每个元素的文档。每个输出文档用一个元素值替换该数组。对于每个输入文档,输出n个文档,其中n是数组元素的数量,对于空数组可以为零。
$currentOp 返回有关MongoDB部署的活动和/或休眠操作的信息。
$listLocalSessions 列出当前在当前连接mongosmongod 实例上使用的所有活动会话。这些会话可能尚未传播到 system.sessions集合。

聚合管道运算符

https://docs.mongodb.com/v3.6/reference/operator/aggregation/#aggregation-pipeline-operators

算术表达式运算符

https://docs.mongodb.com/v3.6/reference/operator/aggregation/#arithmetic-expression-operators

算术表达式对数字执行数学运算,一些算术表达式也可以支持日期算术。

名称 描述
$abs 返回数字的绝对值。
$add 添加数字以返回总和,或者添加数字和日期以返回新日期。如果添加数字和日期,则将数字视为毫秒。接受任意数量的参数表达式,但最多只能一个表达式解析为日期。
$ceil 返回大于或等于指定数字的最小整数。
$divide 返回第一个数字除以第二个数字的结果。接受两个参数表达式。
$exp e提高到指定的指数。
$floor 返回小于或等于指定数字的最大整数。
$ln 计算数字的自然对数。
$log 以指定的底数计算数字的对数。
$log10 计算数字的以10为底的对数。
$mod 返回第一个数字的余数除以第二个数字。接受两个参数表达式。
$multiply 乘以数字可返回乘积。接受任意数量的参数表达式。
$pow 将数字提高到指定的指数。
$sqrt 计算平方根。
$subtract 返回从第一个值减去第二个值的结果。如果两个值是数字,则返回差值。如果两个值是日期,则以毫秒为单位返回差值。如果两个值是日期和以毫秒为单位的数字,则返回结果日期。接受两个参数表达式。如果两个值是日期和数字,请首先指定date参数,因为从数字中减去日期没有意义。
$trunc 将数字截断为其整数。

数组表达式运算符

https://docs.mongodb.com/v3.6/reference/operator/aggregation/#array-expression-operators

$arrayElemAt 返回指定数组索引处的元素。
$arrayToObject 将键值对数组转换为文档。
$concatArrays 连接数组以返回连接的数组。
$filter 选择数组的子集以返回仅包含与过滤条件匹配的元素的数组。
$in 返回一个布尔值,指示指定的值是否在数组中。
$indexOfArray 在数组中搜索指定值的出现,并返回第一个出现的数组索引。如果未找到子字符串,则返回-1
$isArray 确定操作数是否为数组。返回一个布尔值。
$map 对数组的每个元素应用子表达式,并按顺序返回结果值的数组。接受命名参数。
$objectToArray 将文档转换为代表键值对的文档数组。
$range 根据用户定义的输入输出包含整数序列的数组。
$reduce 将表达式应用于数组中的每个元素,并将它们组合为单个值。
$reverseArray 返回具有相反顺序元素的数组。
$size 返回数组中的元素数。接受单个表达式作为参数。
$slice 返回数组的子集。
$zip 将两个数组合并在一起。

布尔表达式运算符

https://docs.mongodb.com/v3.6/reference/operator/aggregation/#boolean-expression-operators

布尔表达式将其参数表达式评估为布尔值,并返回布尔值作为结果。

除了false布尔值,布尔表达式为false如下:null0,和undefined 的值。布尔表达式将所有其他值评估为true,包括非零数值和数组。

名称 描述
$and true仅当其所有表达式的计算结果 均为时返回true。接受任意数量的参数表达式。
$not 返回与其参数表达式相反的布尔值。接受单个参数表达式。
$or true当其任何表达式的计算结果为时, 返回true。接受任意数量的参数表达式。

比较表达式运算符

https://docs.mongodb.com/v3.6/reference/operator/aggregation/#comparison-expression-operators

比较表达式返回一个布尔值,但$cmp 返回一个数字。

比较表达式采用两个参数表达式,并针对不同类型的值使用指定的BSON比较顺序比较值和类型。

名称 描述
$cmp 返回0如果这两个值是相等的,1如果第一个值大于所述第二值,并且-1如果所述第一值大于所述第二以下。
$eq true如果值相等则返回。
$gt true如果第一个值大于第二个值,则返回。
$gte 返回true如果第一个值大于或等于第二个。
$lt true如果第一个值小于第二个值,则返回。
$lte 返回true如果第一个值小于或等于第二。
$ne true如果值相等,则返回。

条件表达式运算符

https://docs.mongodb.com/v3.6/reference/operator/aggregation/#conditional-expression-operators

名称 描述
$cond 一个三元运算符,它对一个表达式求值,并根据结果返回其他两个表达式之一的值。接受有序列表中的三个表达式或三个命名参数。
$ifNull 如果第一个表达式的结果为空,则返回第一个表达式的非空结果或第二个表达式的结果。空结果包含未定义值或缺少字段的实例。接受两个表达式作为参数。第二个表达式的结果可以为空。
$switch 计算一系列案例表达式。当它找到一个计算结果为的表达式时true$switch执行一个指定的表达式并退出控制流程。

日期表达式运算符

https://docs.mongodb.com/v3.6/reference/operator/aggregation/#date-expression-operators

以下运算符返回日期对象或日期对象的组成部分:

名称 描述
$dateFromParts 给定日期的组成部分,构造一个BSON Date对象。
$dateFromString 将日期/时间字符串转换为日期对象。
$dateToParts 返回包含日期组成部分的文档。
$dateToString 以格式字符串返回日期。
$dayOfMonth 以1到31之间的数字返回日期的月份。
$dayOfWeek 以1(星期日)至7(星期六)之间的数字返回日期的星期几。
$dayOfYear 以1到366(le年)之间的数字返回日期的一年中的某天。
$hour 以0到23之间的数字返回日期的小时。
$isoDayOfWeek 以ISO 8601格式返回工作日编号,范围从 1(星期一)到7(星期日)。
$isoWeek 以ISO 8601格式返回星期数,范围从 153。星期数字从1包含一年中第一个星期四的星期(星期一至星期日)开始。
$isoWeekYear 以ISO 8601格式返回年份。年份从第1周的星期一(ISO 8601)开始,到最后一周的星期日(ISO 8601)结束。
$millisecond 以0到999之间的数字返回日期的毫秒数。
$minute 以0到59之间的数字返回日期的分钟。
$month 以1(一月)至12(十二月)之间的数字返回日期的月份。
$second 以0到60之间的数字(le秒)返回日期的秒数。
$week 返回日期的星期数,其范围为0(该年的第一个星期日之前的局部星期)和53(le年)之间的数字。
$year 以数字形式返回日期的年份(例如2014)。

以下算术运算符可以采用日期操作数:

名称 描述
$add 添加数字和日期以返回新日期。如果添加数字和日期,则将数字视为毫秒。接受任意数量的参数表达式,但最多只能一个表达式解析为日期。
$subtract 返回从第一个值减去第二个值的结果。如果两个值是日期,则以毫秒为单位返回差值。如果两个值是日期和以毫秒为单位的数字,则返回结果日期。接受两个参数表达式。如果两个值是日期和数字,请首先指定date参数,因为从数字中减去日期没有意义。

文字表达式运算符

https://docs.mongodb.com/v3.6/reference/operator/aggregation/#literal-expression-operator

名称 描述
$literal 返回不解析的值。用于聚合管道可以解释为表达式的值。例如,$literal对以a开头的字符串使用表达式,$以避免将其解析为字段路径。

对象表达式运算符

https://docs.mongodb.com/v3.6/reference/operator/aggregation/#object-expression-operators

名称 描述
$mergeObjects 将多个文档合并为一个文档。3.6版的新功能。
$objectToArray 将文档转换为代表键值对的文档数组。3.6版的新功能。

集合表达式运算符

https://docs.mongodb.com/v3.6/reference/operator/aggregation/#set-expression-operators

集合表达式对数组执行集运算,将数组视为集合。集合表达式忽略每个输入数组中的重复条目以及元素的顺序。

如果set操作返回一个set,则该操作会滤除结果中的重复项,以输出仅包含唯一条目的数组。输出数组中元素的顺序未指定。

如果一组包含嵌套数组元素,该组表达并没有下降到嵌套阵列,但在评估顶层阵列。

名称 描述
$allElementsTrue 返回true如果没有一套评价了元素 false,否则,返回false。接受单个参数表达式。
$anyElementTrue true如果集合中的任何元素 求和,则返回true;否则,返回false。接受单个参数表达式。
$setDifference 返回具有出现在第一个集合中但不出现在第二个集合中的元素的集合;即执行 第二组相对于第一组的相对补码。正好接受两个参数表达式。
$setEquals 返回true如果输入组具有相同的不同元素。接受两个或多个参数表达式。
$setIntersection 返回具有出现在所有输入集中的元素的集合。接受任意数量的参数表达式。
$setIsSubset 返回true第一个集合的所有元素是否出现在第二个集合中,包括第一个集合等于第二个集合时;即不是严格的子集。正好接受两个参数表达式。
$setUnion 返回带有出现在任何输入集中的元素的集合。

字符串表达式运算符

https://docs.mongodb.com/v3.6/reference/operator/aggregation/#string-expression-operators

字符串表达式(除外 $concat)仅对ASCII字符字符串具有明确定义的行为。

$concat 行为是明确定义的,与所使用的字符无关。

名称 描述
$concat 连接任意数量的字符串。
$dateFromString 将日期/时间字符串转换为日期对象。
$dateToString 以格式字符串返回日期。
$indexOfBytes 在字符串中搜索子字符串的出现,并返回第一次出现的UTF-8字节索引。如果未找到子字符串,则返回-1
$indexOfCP 在字符串中搜索子字符串的出现,并返回第一次出现的UTF-8代码点索引。如果未找到子字符串,则返回-1
$split 根据定界符将字符串拆分为子字符串。返回子字符串数组。如果在字符串中未找到分隔符,则返回包含原始字符串的数组。
$strLenBytes 返回字符串中UTF-8编码的字节数。
$strLenCP 返回字符串中UTF-8代码点的数量。
$strcasecmp 执行不区分大小写的字符串比较并返回: 0如果两个字符串相等,1则第一个字符串大于第二个-1字符串,并且第一个字符串小于第二个字符串。
$substr 不推荐使用。使用$substrBytes$substrCP
$substrBytes 返回字符串的子字符串。从字符串中指定的UTF-8字节索引(从零开始)处的字符开始,并继续指定的字节数。
$substrCP 返回字符串的子字符串。从字符串中指定的UTF-8代码点(CP)索引(从零开始)处的字符开始,并继续指定的代码点数。
$toLower 将字符串转换为小写。接受单个参数表达式。
$toUpper 将字符串转换为大写。接受单个参数表达式。

文本表达式运算符

https://docs.mongodb.com/v3.6/reference/operator/aggregation/#text-expression-operator

名称 描述
$meta 访问文本搜索元数据。

类型表达式运算符

https://docs.mongodb.com/v3.6/reference/operator/aggregation/#type-expression-operators

名称 描述
$type 返回该字段的BSON数据类型。

累加器($group

https://docs.mongodb.com/v3.6/reference/operator/aggregation/#accumulators-group

$group累加器是可以在该阶段中使用的运算符,它们在文档通过管道进行过程时保持其状态(例如,总计,最大值,最小值和相关数据)。

当在$group阶段中用作累加器时,这些运算符将单个表达式作为输入,对每个输入文档评估一次该表达式,并为共享相同组键的文档组维护其阶段。

名称 描述
$addToSet 返回每个组的唯一表达式值的数组。数组元素的顺序未定义。
$avg 返回数值的平均值。忽略非数字值。
$first 为每个组从第一个文档返回一个值。仅当文档按定义的顺序定义顺序。
$last 从每个组的最后一个文档返回一个值。仅当文档按定义的顺序定义顺序。
$max 返回每个组的最高表达式值。
$mergeObjects 返回通过组合每个组的输入文档而创建的文档。
$min 返回每个组的最低表达式值。
$push 返回每个组的表达式值的数组。
$stdDevPop 返回输入值的总体标准偏差。
$stdDevSamp 返回输入值的样本标准偏差。
$sum 返回数值的总和。忽略非数字值。

累加器($project

https://docs.mongodb.com/v3.6/reference/operator/aggregation/#accumulators-project

$group阶段可以作为累加器使用的一些操作符也可以在$project阶段使用,但不能作为累加器使用。在$project阶段使用时,这些操作符不维护它们的状态,可以接受单个参数或多个参数作为输入。

在3.2版更改。

以下累加器操作符也可以在$project$addFields阶段中使用。

名称 描述
$avg 返回每个文档的指定表达式或表达式列表的平均值。忽略非数字值。
$max 返回每个文档的指定表达式或表达式列表的最大值
$min 返回每个文档的指定表达式或表达式列表的最小值
$stdDevPop 返回输入值的总体标准偏差。
$stdDevSamp 返回输入值的样本标准偏差。
$sum 返回数值的总和。忽略非数字值。

变量表达式运算符

https://docs.mongodb.com/v3.6/reference/operator/aggregation/#variable-expression-operators

名称 描述
$let 定义要在子表达式范围内使用的变量,并返回子表达式的结果。接受命名参数。接受任意数量的参数表达式。

表达式运算符的字母顺序列表

https://docs.mongodb.com/v3.6/reference/operator/aggregation/#alphabetical-listing-of-expression-operators

名称 描述
$abs 返回数字的绝对值。
$add 添加数字以返回总和,或者添加数字和日期以返回新日期。如果添加数字和日期,则将数字视为毫秒。接受任意数量的参数表达式,但最多只能一个表达式解析为日期。
$addToSet 返回每个组的唯一表达式值的数组。数组元素的顺序未定义。仅在$group舞台上可用。
$allElementsTrue 返回true如果没有一套评价了元素false,否则,返回false。接受单个参数表达式。
$and true仅当其所有表达式的计算结果 均为时返回true。接受任意数量的参数表达式。
$anyElementTrue true如果集合中的任何元素求和,则返回true;否则,返回false。接受单个参数表达式。
$arrayElemAt 返回指定数组索引处的元素。
$arrayToObject 将键值对数组转换为文档。
$avg 返回数值的平均值。忽略非数字值。在版本3.2中更改:$group$project 阶段均可用。
$ceil 返回大于或等于指定数字的最小整数。
$cmp 返回:0如果两个值相等,1则第一个值大于第二个-1值,并且第一个值小于第二个值。
$concat 连接任意数量的字符串。
$concatArrays 连接数组以返回连接的数组。
$cond 一个三元运算符,它对一个表达式求值,并根据结果返回其他两个表达式之一的值。接受有序列表中的三个表达式或三个命名参数。
$dateFromParts 给定日期的组成部分,构造一个BSON Date对象。
$dateToParts 返回包含日期组成部分的文档。
$dateFromString 返回日期/时间作为日期对象。
$dateToString 以格式字符串返回日期。
$dayOfMonth 以1到31之间的数字返回日期的月份。
$dayOfWeek 以1(星期日)至7(星期六)之间的数字返回日期的星期几。
$dayOfYear 以1到366(le年)之间的数字返回日期的一年中的某天。
$divide 返回第一个数字除以第二个数字的结果。接受两个参数表达式。
$eq true如果值相等则返回。
$exp e提高到指定的指数。
$filter 选择数组的子集以返回仅包含与过滤条件匹配的元素的数组。
$first 为每个组从第一个文档返回一个值。仅当文档按定义的顺序定义顺序。仅在$group舞台上可用。
$floor 返回小于或等于指定数字的最大整数。
$gt true如果第一个值大于第二个值,则返回。
$gte 返回true如果第一个值大于或等于第二个。
$hour 以0到23之间的数字返回日期的小时。
$ifNull 如果第一个表达式的结果为空,则返回第一个表达式的非空结果或第二个表达式的结果。空结果包含未定义值或缺少字段的实例。接受两个表达式作为参数。第二个表达式的结果可以为空。
$in 返回一个布尔值,指示指定的值是否在数组中。
$indexOfArray 在数组中搜索指定值的出现,并返回第一个出现的数组索引。如果未找到子字符串,则返回-1
$indexOfBytes 在字符串中搜索子字符串的出现,并返回第一次出现的UTF-8字节索引。如果未找到子字符串,则返回-1
$indexOfCP 在字符串中搜索子字符串的出现,并返回第一次出现的UTF-8代码点索引。如果未找到子字符串,则返回-1
$isArray 确定操作数是否为数组。返回一个布尔值。
$isoDayOfWeek 以ISO 8601格式返回工作日编号,范围从 1(星期一)到7(星期日)。
$isoWeek 以ISO 8601格式返回星期数,范围从153。星期数字从1包含一年中第一个星期四的星期(星期一至星期日)开始。
$isoWeekYear 以ISO 8601格式返回年份。年份从第1周的星期一(ISO 8601)开始,到最后一周的星期日(ISO 8601)结束。
$last 从每个组的最后一个文档返回一个值。仅当文档按定义的顺序定义顺序。仅在$group舞台上可用。
$let 定义要在子表达式范围内使用的变量,并返回子表达式的结果。接受命名参数。接受任意数量的参数表达式。
$literal 返回不解析的值。用于聚合管道可以解释为表达式的值。例如,$literal对以a开头的字符串使用 表达式, $以避免将其解析为字段路径。
$ln 计算数字的自然对数。
$log 以指定的底数计算数字的对数。
$log10 计算数字的以10为底的对数。
$lt true如果第一个值小于第二个值,则返回。
$lte 返回true如果第一个值小于或等于第二。
$map 对数组的每个元素应用子表达式,并按顺序返回结果值的数组。接受命名参数。
$max 返回每个组的最高表达式值。在版本3.2中更改:$group$project 阶段均可用。
$mergeObjects 将多个文档合并为一个文档。
$meta 访问文本搜索元数据。
$min 返回每个组的最低表达式值。在版本3.2中更改:$group$project 阶段均可用。
$millisecond 以0到999之间的数字返回日期的毫秒数。
$minute 以0到59之间的数字返回日期的分钟。
$mod 返回第一个数字的余数除以第二个数字。接受两个参数表达式。
$month 以1(一月)至12(十二月)之间的数字返回日期的月份。
$multiply 乘以数字可返回乘积。接受任意数量的参数表达式。
$ne true如果值 相等,则返回。
$not 返回与其参数表达式相反的布尔值。接受单个参数表达式。
$objectToArray 将文档转换为代表键值对的文档数组。
$or true当其任何表达式的计算结果为时,返回true。接受任意数量的参数表达式。
$pow 将数字提高到指定的指数。
$push 返回每个组的表达式值的数组。仅在$group舞台上可用。
$range 根据用户定义的输入输出包含整数序列的数组。
$reduce 将表达式应用于数组中的每个元素,并将它们组合为单个值。
$reverseArray 返回具有相反顺序元素的数组。
$second 以0到60之间的数字(le秒)返回日期的秒数。
$setDifference 返回具有出现在第一个集合中但不出现在第二个集合中的元素的集合;即执行 第二组相对于第一组的 相对补码。正好接受两个参数表达式。
$setEquals 返回true如果输入组具有相同的不同元素。接受两个或多个参数表达式。
$setIntersection 返回具有出现在所有输入集中的元素的集合。接受任意数量的参数表达式。
$setIsSubset 返回true第一个集合的所有元素是否出现在第二个集合中,包括第一个集合等于第二个集合时;即不是严格的子集。正好接受两个参数表达式。
$setUnion 返回带有出现在任何输入集中的元素的集合。
$size 返回数组中的元素数。接受单个表达式作为参数。
$slice 返回数组的子集。
$split 根据定界符将字符串拆分为子字符串。返回子字符串数组。如果在字符串中未找到分隔符,则返回包含原始字符串的数组。
$sqrt 计算平方根。
$stdDevPop 返回输入值的总体标准偏差。在版本3.2中更改:$group$project 阶段均可用。
$stdDevSamp 返回输入值的样本标准偏差。在版本3.2中更改:$group$project 阶段均可用。
$strcasecmp 执行不区分大小写的字符串比较并返回:0如果两个字符串相等,1则第一个字符串大于第二个-1字符串,并且第一个字符串小于第二个字符串。
$strLenBytes 返回字符串中UTF-8编码的字节数。
$strLenCP 返回字符串中UTF-8代码点的数量。
$substr 不推荐使用。使用$substrBytes$substrCP
$substrBytes 返回字符串的子字符串。从字符串中指定的UTF-8字节索引(从零开始)处的字符开始,并继续指定的字节数。
$substrCP 返回字符串的子字符串。从字符串中指定的UTF-8代码点(CP)索引(从零开始)处的字符开始,并继续指定的代码点数。
$subtract 返回从第一个值减去第二个值的结果。如果两个值是数字,则返回差值。如果两个值是日期,则以毫秒为单位返回差值。如果两个值是日期和以毫秒为单位的数字,则返回结果日期。接受两个参数表达式。如果两个值是日期和数字,请首先指定date参数,因为从数字中减去日期没有意义。
$sum 返回数值的总和。忽略非数字值。在版本3.2中更改:$group$project 阶段均可用。
$switch 计算一系列案例表达式。当它找到一个计算结果为的表达式时true$switch执行一个指定的表达式并退出控制流程。
$toLower 将字符串转换为小写。接受单个参数表达式。
$toUpper 将字符串转换为大写。接受单个参数表达式。
$trunc 将数字截断为整数。
$type 返回该字段的BSON数据类型。
$week 返回日期的星期数,其范围是0(一年中的第一个星期日之前的局部星期)和53(le年)之间的数字。
$year 以数字形式返回日期的年份(例如2014)。
$zip 将两个数组合并在一起。

that's all,see also:

mongodb运算符

posted @ 2021-01-21 17:09  听雨危楼  阅读(976)  评论(0编辑  收藏  举报