MongoDB手册
Posted 小乌龟的笔记本
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB手册相关的知识,希望对你有一定的参考价值。
https://docs.mongodb.com/manual/reference/method/
https://docs.mongodb.com/manual/reference/operator/query-comparison/
MongoDB
[Reference]
1.[Operators]
=============================================================
1.1.[Query and Projection Operators]
=============================================================
------------------------------------------------------
1.1.1.比较查询运算符[Comparison Query Operators]
------------------------------------------------------
名称 描述
$eq
匹配等于指定值的值。
$gt
匹配大于指定值的值。
$gte
匹配大于或等于指定值的值。
$in
匹配数组中指定的任何值。
$lt
匹配小于指定值的值。
$lte
匹配小于或等于指定值的值。
$ne
匹配所有不等于指定值的值。
$nin
不匹配数组中指定的任何值。
------------------------------------------------------
1.1.2.逻辑查询运算符[Logic Query Operators]
------------------------------------------------------
名称 描述
$and
用逻辑联接查询子句AND将返回两个子句都符合条件的所有文档。
$not
反转查询表达式的效果,并返回与查询表达式不匹配的文档。
$nor
用逻辑联接查询子句NOR将返回两个子句均不匹配的所有文档。
$or
用逻辑联接查询子句OR将返回符合任一子句条件的所有文档。
------------------------------------------------------
1.1.3.元素查询运算符[Element Query Operators]
------------------------------------------------------
名称 描述
$exists
匹配具有指定字段的文档。
$type
如果字段是指定类型,则选择文档。
------------------------------------------------------
1.1.4.评估查询运算符[Evaluation Query Operators]
------------------------------------------------------
名称 描述
$expr
允许在查询语言中使用聚合表达式。
$jsonSchema
根据给定的JSON Schema验证文档。
$mod
对字段的值执行模运算,并选择具有指定结果的文档。
$regex
选择值与指定的正则表达式匹配的文档。
$text
执行文本搜索。
$where
匹配满足javascript表达式的文档。
------------------------------------------------------
1.1.5.地理空间查询运算符[Geospatial Query Operators?]
------------------------------------------------------
查询选择器
名称 描述
$geoIntersects
选择与GeoJSON几何形状相交的几何形状。该2dsphere索引支持 $geoIntersects。
$geoWithin
选择边界GeoJSON几何内的几何。该2dsphere和2D指标支持 $geoWithin。
$near
返回点附近的地理空间对象。需要地理空间索引。该2dsphere和2D指标支持 $near。
$nearSphere
返回球体上某个点附近的地理空间对象。需要地理空间索引。该2dsphere和2D指标支持 $nearSphere。
几何说明
名称 描述
$box
使用传统坐标对来指定一个矩形框进行 $geoWithin查询。所述2D指数支撑 $box。
$center $geoWithin
使用平面几何时,使用旧坐标对指定圆以进行 查询。所述2D指数支撑$center。
$centerSphere
使用球形几何图形时,使用传统坐标对或GeoJSON格式指定一个圆来 进行$geoWithin查询。该2dsphere和 2D指标支持$centerSphere。
$geometry
为地理空间查询运算符指定GeoJSON格式的几何。
$maxDistance
指定最大距离以限制$near 和$nearSphere查询的结果。该2dsphere和2D指标支持 $maxDistance。
$minDistance
指定最小距离以限制$near 和$nearSphere查询的结果。2dsphere仅与索引一起使用。
$polygon
指定要使用旧式坐标对进行 $geoWithin查询的面。所述2D指数支撑 $center。
$uniqueDocs
不推荐使用。修改$geoWithin和$near查询以确保即使文档多次匹配查询,查询也会返回一次文档。
------------------------------------------------------
1.1.6.数组查询运算符[Array Query Operators]
------------------------------------------------------
名称 描述
$all
匹配包含查询中指定的所有元素的数组。
$elemMatch
如果array字段中的元素符合所有指定$elemMatch条件,则选择文档。
$size
如果数组字段为指定大小,则选择文档。
------------------------------------------------------
1.1.7.按位查询运算符[Bitwise Query Operators]
------------------------------------------------------
名称 描述
$bitsAllClear
匹配数字或二进制值,其中一组位位置的所有值均为0。
$bitsAllSet
匹配数字或二进制值,其中一组位位置的所有值均为1。
$bitsAnyClear
匹配数字或二进制值,在这些数字或二进制值中,一组位位置中的任何位的值均为0。
$bitsAnySet
匹配数字或二进制值,在这些数字或二进制值中,一组位位置中的任何位的值均为1。
------------------------------------------------------
1.1.8.$comment
------------------------------------------------------
Behavior
You can use the $comment with any expression taking a query predicate,
such as the query predicate in db.collection.update() or in the $match stage of the aggregation pipeline.
For an example, see Attach a Comment to an Aggregation Expression.
db.records.find(
{
x: { $mod: [ 2, 0 ] },
$comment: "Find even values."
}
)
------------------------------------------------------
1.1.9.投影算子 【难度[★★★★★★☆] 还需要好好理解】
------------------------------------------------------
$
The positional $ operator limits the contents of an <array> from the query results to
contain only the first element matching the query document.
To specify an array element to update, see the positional $ operator for updates.
$elemMatch
The $elemMatch operator limits the contents of an <array> field from the query results to contain
only the first element matching the $elemMatch condition.
$meta 在$meta每个匹配文档投影算子返回元数据(例如"textScore")与所述查询相关联。
The $meta projection operator returns for each matching document the metadata (e.g. "textScore")
associated with the query.
$slice
The $slice operator controls the number of items of an array that a query returns.
For information on limiting the size of an array during an update with $push, see the $slice modifier instead.
db.collection.find() operations on views do not support $slice projection operator.
=============================================================
1.2.更新运算符[Update Operators]
=============================================================
------------------------------------------------------
1.2.1字段更新运算符[Field Update Operators]
------------------------------------------------------
名称 描述
$currentDate
将字段的值设置为当前日期(日期或时间戳)。
$inc
将字段的值增加指定的数量。
$min
仅当指定值小于现有字段值时才更新该字段。
$max
仅当指定值大于现有字段值时才更新该字段。
$mul
将字段的值乘以指定的数量。
$rename
重命名字段。
$set
设置文档中字段的值。
$setOnInsert
如果更新导致插入文档,则设置字段的值。对修改现有文档的更新操作没有影响。
$unset
从文档中删除指定的字段。
------------------------------------------------------
1.2.2.[Array Update Operators]
------------------------------------------------------
---->[更新 运算符]
名称 描述
$
充当占位符,以更新与查询条件匹配的第一个元素。
$[]
充当占位符,以更新匹配查询条件的文档的数组中的所有元素。
$[<identifier>]
充当占位符,以更新arrayFilters与查询条件匹配的文档中所有与条件匹配的元素。
$addToSet
仅当元素不存在于集合中时才将它们添加到数组中。
$pop
删除数组的第一项或最后一项。
$pull
删除与指定查询匹配的所有数组元素。
$push
将项目添加到数组。
$pullAll
从数组中删除所有匹配的值。
---->[更新 运算符 修饰符]
名称 描述
$each
修改$push和$addToSet运算符以附加多个项以进行数组更新。
$position
修改$push运算符以指定要添加元素的数组中的位置。
$slice
修改$push运算符以限制更新数组的大小。
$sort
修改$push运算符以对存储在数组中的文档重新排序。
------------------------------------------------------
1.2.4.按位更新运算符[Bitwise Update Operator]
------------------------------------------------------
名称 描述
$bit
执行按位AND,OR和XOR更新整数值。
=============================================================
1.3.聚合管道[Aggregation Pipeline Stages]
=============================================================
------------------------------------------------------
1.3.1.Aggregation Pipeline Stages
------------------------------------------------------
Stage Description
$addFields
将新字段添加到文档。与相似 $project,$addFields重塑流中的每个文档;
具体而言,通过向输出文档添加新字段,该文档既包含输入文档中的现有字段,又包含新添加的字段。
$set是$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查询。对于每个输入文档,输出一个文档(匹配)或零文档(不匹配)。
$merge
将聚合管道的结果文档写入集合。
该阶段可以将结果合并(插入新文档,合并文档,替换文档,保留现有文档,使操作失败,使用自定义更新管道处理文档)
将结果合并到输出集合中。要使用该$merge阶段,它必须是管道中的最后一个阶段。
4.2版中的新功能。
$out
将聚合管道的结果文档写入集合。要使用该$out阶段,它必须是管道中的最后一个阶段。
$planCacheStats
返回集合的计划缓存信息。
$project
重塑流中的每个文档,例如通过添加新字段或删除现有字段。对于每个输入文档,输出一个文档。
另请参阅$unset删除现有字段。
$redact
通过基于文档本身中存储的信息限制每个文档的内容,来重塑流中的每个文档。包含$project和的功能 $match。可用于实施字段级修订。对于每个输入文档,输出一个或零个文档。
$replaceRoot
用指定的嵌入式文档替换文档。该操作将替换输入文档中的所有现有字段,包括该_id字段。指定嵌入在输入文档中的文档以将嵌入的文档提升到顶层。
$replaceWith
是$replaceRoot舞台的别名 。
$replaceWith
用指定的嵌入式文档替换文档。该操作将替换输入文档中的所有现有字段,包括该_id字段。指定嵌入在输入文档中的文档以将嵌入的文档提升到顶层。
$replaceWith
是$replaceRoot舞台的别名 。
$sample
从其输入中随机选择指定数量的文档。
$set
将新字段添加到文档。与相似 $project,$set重塑流中的每个文档;具体而言,
通过向输出文档添加新字段,该文档既包含输入文档中的现有字段,又包含新添加的字段。
$set
是$addFields舞台的别名。
$skip
跳过前n个文档,其中n是指定的跳过编号,并将其余未修改的文档传递到管道。对于每个输入文档,输出零个文档(对于前n个文档)或一个文档(如果在前n个文档之后)。
$sort
通过指定的排序键对文档流重新排序。只有顺序改变;这些文档保持不变。对于每个输入文档,输出一个文档。
$sortByCount
根据指定表达式的值对传入文档进行分组,然后计算每个不同组中的文档数。
$unset
从文档中删除/排除字段。
$unset
是$project删除字段的阶段的别名。
$unwind
从输入文档中解构一个数组字段,以输出每个元素的文档。
每个输出文档用一个元素值替换该数组。
对于每个输入文档,输出n个文档,其中n是数组元素的数量,对于空数组可以为零。
------------------------------------------------------
------------------------------------------------------
算术表达式运算符
算术表达式对数字执行数学运算。一些算术表达式也可以支持日期算术。
名称 描述
$abs
返回数字的绝对值。
$add
添加数字以返回总和,或者添加数字和日期以返回新日期。如果添加数字和日期,则将数字视为毫秒。接受任意数量的参数表达式,但最多只能一个表达式解析为日期。
$ceil 返回大于或等于指定数字的最小整数。
$divide 返回第一个数字除以第二个数字的结果。接受两个参数表达式。
$exp 将e提高到指定的指数。
$floor 返回小于或等于指定数字的最大整数。
$ln 计算数字的自然对数。
$log 以指定的底数计算数字的对数。
$log10 计算数字以10为底的对数。
$mod 返回第一个数字的余数除以第二个数字。接受两个参数表达式。
$multiply 乘以数字可返回乘积。接受任意数量的参数表达式。
$pow 将数字提高到指定的指数。
$round 将数字四舍五入为整数或指定的小数位。
$sqrt 计算平方根。
$subtract 返回从第一个值减去第二个值的结果。如果两个值是数字,则返回差值。如果两个值是日期,则以毫秒为单位返回差值。如果两个值是日期和毫秒数,则返回结果日期。接受两个参数表达式。如果两个值是日期和数字,请首先指定date参数,因为从数字中减去日期没有意义。
$trunc 将数字截断为整数或指定的小数位。
数组表达式运算符
$arrayElemAt 返回指定数组索引处的元素。
$arrayToObject 将键值对数组转换为文档。
$concatArrays 连接数组以返回连接的数组。
$filter 选择数组的一个子集以返回仅包含与过滤条件匹配的元素的数组。
$in 返回一个布尔值,指示指定的值是否在数组中。
$indexOfArray 在数组中搜索指定值的出现,并返回第一次出现的数组索引。如果未找到子字符串,则返回-1。
$isArray 确定操作数是否为数组。返回一个布尔值。
$map 对数组的每个元素应用子表达式,并按顺序返回结果值的数组。接受命名参数。
$objectToArray 将文档转换为代表键值对的文档数组。
$range 根据用户定义的输入输出包含整数序列的数组。
$reduce 将表达式应用于数组中的每个元素,并将它们组合为单个值。
$reverseArray 返回具有相反顺序元素的数组。
$size 返回数组中的元素数。接受单个表达式作为参数。
$slice 返回数组的子集。
$zip 将两个数组合并在一起。
布尔表达式运算符
布尔表达式将其参数表达式评估为布尔值,并返回布尔值作为结果。
除了false布尔值,布尔表达式为false如下:null,0,和undefined 的值。布尔表达式将所有其他值评估为true,包括非零数字值和数组。
名称 描述
$and true仅当其所有表达式的计算结果 均为时返回true。接受任意数量的参数表达式。
$not 返回与其参数表达式相反的布尔值。接受单个参数表达式。
$or true当其任何表达式的计算结果为时, 返回true。接受任意数量的参数表达式。
比较表达式运算符
比较表达式返回一个布尔值,但$cmp 返回一个数字。
比较表达式采用两个参数表达式,并针对不同类型的值使用指定的BSON比较顺序来比较值和类型。
$cmp 返回0如果这两个值是相等的,1如果第一个值大于所述第二值,并且-1如果所述第一值大于所述第二以下。
$eq true如果值相等则返回。
$gt true如果第一个值大于第二个值,则返回。
$gte 返回true如果第一个值大于或等于第二个。
$lt true如果第一个值小于第二个值,则返回。
$lte 返回true如果第一个值小于或等于第二。
$ne true如果值不相等,则返回。
条件表达式运算符
名称 描述
$cond 一个三元运算符,它对一个表达式求值,并根据结果返回其他两个表达式之一的值。接受有序列表中的三个表达式或三个命名参数。
$ifNull 如果第一个表达式的结果为空,则返回第一个表达式的非空结果或第二个表达式的结果。空结果包含未定义值或缺少字段的实例。接受两个表达式作为参数。第二个表达式的结果可以为null。
$switch 计算一系列案例表达式。当它找到一个计算结果为的表达式时true,$switch执行一个指定的表达式并退出控制流程。
日期表达式运算符
以下运算符返回日期对象或日期对象的组成部分:
名称 描述
$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格式返回星期数,范围从 1到53。星期数字从1包含一年中第一个星期四的星期(星期一至星期日)开始。
$isoWeekYear 以ISO 8601格式返回年份。年份从第1周的星期一(ISO 8601)开始,到最后一周的星期日(ISO 8601)结束。
$millisecond 以0到999之间的数字返回日期的毫秒数。
$minute 以0到59之间的数字返回日期的分钟。
$month 以1(一月)至12(十二月)之间的数字返回日期的月份。
$second 以0到60之间的数字返回日期的秒数(le秒)。
$toDate
将值转换为日期。
版本4.0中的新功能。
$week 返回日期的星期数,其范围为0(该年的第一个星期日之前的局部星期)和53(le年)之间的数字。
$year 以数字形式返回日期的年份(例如2014)。
以下算术运算符可以采用日期操作数:
名称 描述
$add 添加数字和日期以返回新日期。如果添加数字和日期,则将数字视为毫秒。接受任意数量的参数表达式,但最多只能一个表达式解析为日期。
$subtract 返回从第一个值减去第二个值的结果。如果两个值是日期,则以毫秒为单位返回差值。如果两个值是日期和毫秒数,则返回结果日期。接受两个参数表达式。如果两个值是日期和数字,请首先指定date参数,因为从数字中减去日期没有意义。
文字表达式运算符
名称 描述
$literal 返回一个没有解析的值。用于聚合管道可以解释为表达式的值。例如,$literal对以a开头的字符串使用表达式,$以避免将其解析为字段路径。
对象表达式运算符
名称 描述
$mergeObjects
将多个文档合并为一个文档。
3.6版的新功能。
$objectToArray
将文档转换为代表键值对的文档数组。
3.6版的新功能。
集表达式运算符
set表达式对数组执行set操作,将数组视为set。集合表达式将忽略每个输入数组中的重复条目以及元素的顺序。
如果set操作返回一个set,则该操作会滤除结果中的重复项,以输出仅包含唯一条目的数组。输出数组中元素的顺序未指定。
如果一组包含嵌套数组元素,该组表达并没有下降到嵌套阵列,但在评估顶层阵列。
名称 描述
$allElementsTrue 返回true如果没有一套评价了元素 false,否则,返回false。接受单个参数表达式。
$anyElementTrue true如果集合中的任何元素 求和,则返回true;否则,返回false。接受单个参数表达式。
$setDifference 返回具有出现在第一个集合中但不出现在第二个集合中的元素的集合;即执行 第二组相对于第一组的相对补码。正好接受两个参数表达式。
$setEquals 返回true如果输入组具有相同的不同元素。接受两个或多个参数表达式。
$setIntersection 返回具有出现在所有输入集中的元素的集合。接受任意数量的参数表达式。
$setIsSubset 返回true第一个集合的所有元素是否出现在第二个集合中,包括第一个集合等于第二个集合时;即不是严格的子集。正好接受两个参数表达式。
$setUnion 返回一个集合,其中包含出现在任何输入集中的元素。
字符串表达式运算符
字符串表达式(除外 $concat)仅对ASCII字符字符串具有明确定义的行为。
$concat 行为是明确定义的,与所使用的字符无关。
名称 描述
$concat 连接任意数量的字符串。
$dateFromString 将日期/时间字符串转换为日期对象。
$dateToString 以格式字符串返回日期。
$indexOfBytes 在字符串中搜索子字符串的出现,并返回第一次出现的UTF-8字节索引。如果未找到子字符串,则返回-1。
$indexOfCP 在字符串中搜索子字符串的出现,并返回第一次出现的UTF-8代码点索引。如果未找到子字符串,则返回-1
$ltrim
从字符串开头删除空格或指定的字符。
版本4.0中的新功能。
$regexFind
将正则表达式(regex)应用于字符串,并返回第一个匹配的子字符串的信息。
4.2版中的新功能。
$regexFindAll
将正则表达式(regex)应用于字符串,并返回所有匹配的子字符串的信息。
4.2版中的新功能。
$regexMatch
将正则表达式(regex)应用于字符串,并返回一个布尔值,该布尔值指示是否找到匹配项。
4.2版中的新功能。
$rtrim
从字符串末尾删除空格或指定的字符。
版本4.0中的新功能。
$split 根据定界符将字符串拆分为子字符串。返回子字符串数组。如果在字符串中未找到分隔符,则返回包含原始字符串的数组。
$strLenBytes 返回字符串中UTF-8编码的字节数。
$strLenCP 返回字符串中UTF-8 代码点的数量。
$strcasecmp 执行不区分大小写的字符串比较并返回: 0如果两个字符串相等,1则第一个字符串大于第二个-1字符串,并且第一个字符串小于第二个字符串。
$substr 不推荐使用。使用$substrBytes或 $substrCP。
$substrBytes 返回字符串的子字符串。从字符串中指定的UTF-8字节索引(从零开始)处的字符开始,并继续指定的字节数。
$substrCP 返回字符串的子字符串。从字符串中指定的UTF-8 代码点(CP)索引(从零开始)处的字符开始,并继续指定的代码点数。
$toLower 将字符串转换为小写。接受单个参数表达式。
$toString
将值转换为字符串。
版本4.0中的新功能。
$trim
从字符串的开头和结尾删除空格或指定的字符。
版本4.0中的新功能。
$toUpper 将字符串转换为大写。接受单个参数表达式。
文本表达式运算符
名称 描述
$meta 访问文本搜索元数据。
三角表达式运算符
三角表达式对数字执行三角运算。表示角度的值始终以弧度为单位输入或输出。使用 $degreesToRadians和$radiansToDegrees在度和弧度测量之间转换。
名称 描述
$sin 返回以弧度为单位的值的正弦值。
$cos 返回以弧度为单位的值的余弦值。
$tan 返回以弧度为单位的值的切线。
$asin 返回弧度值的反正弦(弧正弦)。
$acos 返回以弧度为单位的值的反余弦(弧余弦)。
$atan 返回弧度值的反正切(弧切线)。
$atan2 返回弧度的反正切(弧正切),其中和是分别传递给表达式的第一个和第二个值。y / xyx
$asinh 返回弧度值的反双曲正弦(双曲反正弦)。
$acosh 返回弧度值的反双曲余弦(双曲反余弦)。
$atanh 返回弧度值的反双曲正切(双曲反正切)。
$degreesToRadians 将值从度转换为弧度。
$radiansToDegrees 将值从弧度转换为度。
类型表达式运算符
名称 描述
$convert
将值转换为指定的类型。
版本4.0中的新功能。
$toBool
将值转换为布尔值。
版本4.0中的新功能。
$toDate
将值转换为日期。
版本4.0中的新功能。
$toDecimal
将值转换为Decimal128。
版本4.0中的新功能。
$toDouble
将值转换为双精度。
版本4.0中的新功能。
$toInt
将值转换为整数。
版本4.0中的新功能。
$toLong
将值转换为long。
版本4.0中的新功能。
$toObjectId
将值转换为ObjectId。
版本4.0中的新功能。
$toString
将值转换为字符串。
版本4.0中的新功能。
$type 返回该字段的BSON数据类型。
累加器($group)
$group累加器是可在阶段中使用的运算符,它们在文档通过管道进行时保持其状态(例如,总计,最大值,最小值和相关数据)。
当在$group阶段中用作累加器时,这些运算符将单个表达式作为输入,对每个输入文档评估一次该表达式,并为共享相同组键的文档组维护其阶段。
名称 描述
$addToSet 返回每个组的唯一表达式值的数组。数组元素的顺序未定义。
$avg 返回数值的平均值。忽略非数字值。
$first 从每个组的第一个文档返回一个值。仅当文档按定义的顺序定义顺序。
$last 从每个组的最后一个文档返回一个值。仅当文档按定义的顺序定义顺序。
$max 返回每个组的最高表达式值。
$mergeObjects 返回通过组合每个组的输入文档而创建的文档。
$min 返回每个组的最低表达式值。
$push 返回每个组的表达式值的数组。
$stdDevPop 返回输入值的总体标准偏差。
$stdDevSamp 返回输入值的样本标准偏差。
$sum 返回数值的总和。忽略非数字值。
累加器(处于其他阶段)
某些可用作$group阶段的累加器的运算符 也可用于其他阶段,但不能用作累加器。在其他阶段使用这些运算符时,它们不会保持其状态,并且可以将单个参数或多个参数用作输入。有关详细信息,请参见特定的操作员页面。
在版本3.2中更改。
下面的蓄电池运营商也可在 $project,$addFields和$set阶段。
名称 描述
$avg 返回每个文档的指定表达式或表达式列表的平均值。忽略非数字值。
$max 返回每个文档的指定表达式或表达式列表的最大值
$min 返回每个文档的指定表达式或表达式列表的最小值
$stdDevPop 返回输入值的总体标准偏差。
$stdDevSamp 返回输入值的样本标准偏差。
$sum 返回数值的总和。忽略非数字值。
变量表达式运算符
名称 描述
$let
定义要在子表达式范围内使用的变量,并返回子表达式的结果。接受命名参数。
接受任意数量的参数表达式。
表达式运算符的字母顺序列表
名称 描述
$abs 返回数字的绝对值。
$acos 返回以弧度为单位的值的反余弦(弧余弦)。
$acosh 返回弧度值的反双曲余弦(双曲反余弦)。
$add 添加数字以返回总和,或者添加数字和日期以返回新日期。如果添加数字和日期,则将数字视为毫秒。接受任意数量的参数表达式,但最多只能一个表达式解析为日期。
$addToSet
返回每个组的唯一表达式值的数组。数组元素的顺序未定义。
仅在$group舞台上可用。
$allElementsTrue 返回true如果没有一套评价了元素false,否则,返回false。接受单个参数表达式。
$and true仅当其所有表达式的计算结果 均为时返回true。接受任意数量的参数表达式。
$anyElementTrue true如果集合中的任何元素求和,则返回true;否则,返回false。接受单个参数表达式。
$arrayElemAt 返回指定数组索引处的元素。
$arrayToObject 将键值对数组转换为文档。
$asin 返回弧度值的反正弦(弧正弦)。
$asinh 返回弧度值的反双曲正弦(双曲线反正弦)。
$atan 返回弧度值的反正切(弧切线)。
$atan2 返回弧度的反正切(弧正切),其中和是分别传递给表达式的第一个和第二个值。y / xyx
$atanh 返回弧度值的反双曲正切(双曲反正切)。
$avg
返回数值的平均值。忽略非数字值。
在版本3.2中更改:在$group和$project 阶段均可用。
$ceil 返回大于或等于指定数字的最小整数。
$cmp 返回:0如果两个值相等,1则第一个值大于第二个-1值,并且第一个值小于第二个值。
$concat 连接任意数量的字符串。
$concatArrays 连接数组以返回连接的数组。
$cond 一个三元运算符,它对一个表达式求值,并根据结果返回其他两个表达式之一的值。接受有序列表中的三个表达式或三个命名参数。
$convert 将值转换为指定的类型。
$cos 返回以弧度为单位的值的余弦值。
$dateFromParts 给定日期的组成部分,构造一个BSON Date对象。
$dateToParts 返回包含日期组成部分的文档。
$dateFromString 返回日期/时间作为日期对象。
$dateToString 以格式字符串返回日期。
$dayOfMonth 以1到31之间的数字返回日期的月份。
$dayOfWeek 以1(星期日)至7(星期六)之间的数字返回日期的星期几。
$dayOfYear 以1到366(le年)之间的数字返回日期中的日期。
$degreesToRadians 将值从度转换为弧度。
$divide 返回第一个数字除以第二个数字的结果。接受两个参数表达式。
$eq true如果值相等则返回。
$exp 将e提高到指定的指数。
$filter 选择数组的一个子集以返回仅包含与过滤条件匹配的元素的数组。
$first
从每个组的第一个文档返回一个值。仅当文档按定义的顺序定义顺序。
仅在$group舞台上可用。
$floor 返回小于或等于指定数字的最大整数。
$gt true如果第一个值大于第二个值,则返回。
$gte 返回true如果第一个值大于或等于第二个。
$hour 以0到23之间的数字返回日期的小时数。
$ifNull 如果第一个表达式的结果为空,则返回第一个表达式的非空结果或第二个表达式的结果。空结果包含未定义值或缺少字段的实例。接受两个表达式作为参数。第二个表达式的结果可以为null。
$in 返回一个布尔值,指示指定的值是否在数组中。
$indexOfArray 在数组中搜索指定值的出现,并返回第一次出现的数组索引。如果未找到子字符串,则返回-1。
$indexOfBytes 在字符串中搜索子字符串的出现,并返回第一次出现的UTF-8字节索引。如果未找到子字符串,则返回-1。
$indexOfCP 在字符串中搜索子字符串的出现,并返回第一次出现的UTF-8代码点索引。如果未找到子字符串,则返回-1。
$isArray 确定操作数是否为数组。返回一个布尔值。
$isoDayOfWeek 以ISO 8601格式返回工作日编号,范围从 1(星期一)到7(星期日)。
$isoWeek 以ISO 8601格式返回星期数,范围从1到53。星期数字从1包含一年中第一个星期四的星期(星期一至星期日)开始。
$isoWeekYear 以ISO 8601格式返回年份。年份从第1周的星期一(ISO 8601)开始,到最后一周的星期日(ISO 8601)结束。
$last
从每个组的最后一个文档返回一个值。仅当文档按定义的顺序定义顺序。
仅在$group舞台上可用。
$let
定义要在子表达式范围内使用的变量,并返回子表达式的结果。接受命名参数。
接受任意数量的参数表达式。
$literal 返回一个没有解析的值。用于聚合管道可以解释为表达式的值。例如,$literal对以a开头的字符串使用 表达式, $以避免将其解析为字段路径。
$ln 计算数字的自然对数。
$log 以指定的底数计算数字的对数。
$log10 计算数字以10为底的对数。
$lt true如果第一个值小于第二个值,则返回。
$lte 返回true如果第一个值小于或等于第二。
$ltrim 从字符串开头删除空格或指定的字符。
$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舞台上可用。
$radiansToDegrees 将值从弧度转换为度。
$range 根据用户定义的输入输出包含整数序列的数组。
$reduce 将表达式应用于数组中的每个元素,并将它们组合为单个值。
$regexFind 将正则表达式(regex)应用于字符串,并返回第一个匹配的子字符串的信息。
$regexFindAll 将正则表达式(regex)应用于字符串,并返回所有匹配的子字符串的信息。
$regexMatch 将正则表达式(regex)应用于字符串,并返回一个布尔值,该布尔值指示是否找到匹配项。
$reverseArray 返回具有相反顺序元素的数组。
$round 将数字四舍五入为整数或指定的小数位。
$rtrim 从字符串末尾删除空格或指定的字符。
$second 以0到60之间的数字返回日期的秒数(le秒)。
$setDifference 返回具有出现在第一个集合中但不出现在第二个集合中的元素的集合;即执行 第二组相对于第一组的 相对补码。正好接受两个参数表达式。
$setEquals 返回true如果输入组具有相同的不同元素。接受两个或多个参数表达式。
$setIntersection 返回具有出现在所有输入集中的元素的集合。接受任意数量的参数表达式。
$setIsSubset 返回true第一个集合的所有元素是否出现在第二个集合中,包括第一个集合等于第二个集合时;即不是严格的子集。正好接受两个参数表达式。
$setUnion 返回一个集合,其中包含出现在任何输入集中的元素。
$size 返回数组中的元素数。接受单个表达式作为参数。
$sin 返回以弧度为单位的值的正弦值。
$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执行一个指定的表达式并退出控制流程。
$tan 返回以弧度为单位的值的切线。
$toBool 将值转换为布尔值。
$toDate 将值转换为日期。
$toDecimal 将值转换为Decimal128。
$toDouble 将值转换为双精度。
$toInt 将值转换为整数。
$toLong 将值转换为long。
$toObjectId 将值转换为ObjectId。
$toString 将值转换为字符串。
$toLower 将字符串转换为小写。接受单个参数表达式。
$toUpper 将字符串转换为大写。接受单个参数表达式。
$trim 从字符串的开头和结尾删除空格或指定的字符。
$trunc 将数字截断为整数或指定的小数位。
$type 返回该字段的BSON数据类型。
$week 返回日期的星期数,其范围为0(该年的第一个星期日之前的局部星期)和53(le年)之间的数字。
$year 以数字形式返回日期的年份(例如2014)。
$zip 将两个数组合并在一起。
------------------------------------------------------
查询修饰符
------------------------------------------------------
名称 描述
$comment 向查询添加注释,以标识数据库探查器输出中的查询。
$explain 强制MongoDB报告查询执行计划。请参阅explain()。
$hint 强制MongoDB使用特定索引。看到hint()
$max 指定要在查询中使用的索引的排他上限。请参阅max()。
$maxTimeMS 指定用于游标的处理操作的累积时间限制(以毫秒为单位)。请参阅maxTimeMS()。
$min 指定一个包容性的下限为索引在查询中使用。请参阅min()。
$orderby 返回带有根据排序规范排序的文档的游标。请参阅sort()。
$query 包装查询文档。
$returnKey 强制光标仅返回索引中包含的字段。
$showDiskLoc 修改返回的文档以包括对每个文档在磁盘上位置的引用。
排序顺序
名称 描述
$natural 一种特殊的排序顺序,使用磁盘上的文档顺序对文档进行排序。
以上是关于MongoDB手册的主要内容,如果未能解决你的问题,请参考以下文章