MongoDB 查询语言(MQL)运算符可在查询中启用强大的筛选、比较和数据作。 掌握这些运算符有助于编写表达查询,以有效地检索和更新集合中的文档。
蓄电池
聚合管道中使用累加器运算符对分组数据执行计算。
| Description | |
|---|---|
$avg |
$avg运算符计算组、存储桶或窗口中文档的数值平均值。 |
$bottom |
$bottom运算符从查询的结果集中返回由一个或多个字段排序的最后一个文档 |
$bottomN |
$bottomN运算符返回结果中最后 N 个文档,该文档按一个或多个字段排序 |
$count |
运算符 $count 用于计算与查询筛选条件匹配的文档数。 |
$first |
$first运算符根据组的排序顺序返回组中的第一个值。 |
$firstN |
$firstN运算符对查询指定的一个或多个字段上的文档进行排序,并返回与筛选条件匹配的第一个 N 文档 |
$last |
$last 运算符返回按一个或多个字段排序的结果中的最后一个文档 |
$lastN |
$lastN 累加器运算符返回一组文档中的最后 N 个值。 |
$max |
$max运算符从一组输入值返回最大值。 |
$maxN |
$maxN作程序根据指定的筛选条件检索前 N 个值 |
$median |
$median运算符计算文档中数值字段的中值。 |
$min |
$min 运算符检索指定字段的最小值 |
$minN |
$minN运算符根据指定的筛选条件检索底部 N 值 |
$percentile |
$percentile运算符计算与筛选条件匹配的数字值的百分位 |
$stddevpop |
$stddevpop运算符计算指定值的标准偏差 |
$stddevsamp |
$stddevsamp运算符计算指定值样本的标准偏差,而不是整个总体 |
$sum |
$sum运算符根据筛选条件计算字段的值的总和 |
$top |
$top运算符从结果集中返回按一个或多个字段排序的第一个文档 |
$topN |
$topN运算符返回结果中按一个或多个字段排序的第一个 N 文档 |
集合体
聚合运算符用于对聚合管道中的分组数据执行作。
| Description | |
|---|---|
$addFields |
聚合管道中的 $addFields 阶段用于向文档添加新字段。 |
$bucket |
$bucket运算符根据指定的边界将输入文档分组到存储桶中。 |
$changeStream |
$changeStream阶段将打开更改流游标以实时跟踪数据更改。 |
$collStats |
聚合管道中的$collStats阶段用于返回有关集合的统计信息。 |
$convert |
$convert运算符将表达式转换为指定类型 |
$densify |
$densify运算符在数组或集合中的值序列中添加缺失的数据点。 |
$documents |
$documents阶段从提供的一组文档创建管道。 |
$facet |
$facet允许在单个管道阶段内执行多个并行聚合。 |
$fill |
$fill 阶段允许根据指定的方法和条件填充文档中的缺失值。 |
$geoNear |
$geoNear运算符按靠近地理空间点的位置查找和排序文档,并返回每个文档的距离信息。 |
$group |
$group阶段按指定的标识符表达式对文档进行分组,并应用累加器表达式。 |
$indexStats |
$indexStats阶段返回集合中每个索引的使用情况统计信息。 |
$isNumber |
$isNumber运算符检查指定的表达式是否为数值类型 |
$lookup |
聚合框架中的 $lookup 阶段用于与其他集合执行左外部联接。 |
$match |
聚合管道中的$match阶段用于筛选与指定条件匹配的文档。 |
$merge |
聚合管道中的$merge阶段将聚合结果写入指定集合。 |
$out |
$out聚合管道中的阶段将生成的文档写入指定的集合。 |
$redact |
$redact运算符根据访问权限筛选文档的内容。 |
$replaceWith |
DocumentDB 中的 $replaceWith 运算符在将文档替换为指定文档后返回文档 |
$sample |
DocumentDB 中的 $sample 运算符返回随机选择的文档数 |
$set |
DocumentDB 中的 $set 运算符更新或创建具有指定值的新字段 |
$skip |
聚合管道中的 $skip 阶段用于跳过输入中的指定数量的文档,并将其余文档传递到管道中的下一阶段。 |
$sort |
聚合管道中的 $sort 阶段用于按指定的字段对管道中的文档排序。 |
$sortByCount |
聚合管道中的 $sortByCount 阶段用于按指定表达式对文档进行分组,然后按降序对每个组中的文档计数进行排序。 |
$toBool |
$toBool运算符将表达式转换为布尔类型 |
$toDate |
$toDate运算符将支持的类型转换为正确的 Date 对象。 |
$toDecimal |
$toDecimal运算符将表达式转换为十进制类型 |
$toDouble |
$toDouble运算符将表达式转换为 Double 值 |
$toInt |
$toInt运算符将表达式转换为 Integer |
$toLong |
$toLong运算符将表达式转换为 Long 值 |
$toObjectId |
$toObjectId运算符将表达式转换为 ObjectId |
$toString |
$toString运算符将表达式转换为 String |
$unset |
聚合管道中的 $unset 阶段用于从文档中移除指定字段。 |
$unwind |
聚合框架中的 $unwind 阶段用于从输入文档解构数组字段,以便为每个元素输出文档。 |
算术表达式
算术表达式运算符对数值执行数学运算。
| Description | |
|---|---|
$abs |
$abs运算符返回数字的绝对值。 |
$add |
$add运算符返回两个数字的总和或日期和数字的总和。 |
$ceil |
$ceil运算符返回大于或等于指定数字的最小整数。 |
$divide |
$divide 运算符对两个数字进行除法运算并返回商。 |
$exp |
$exp运算符将 e 引发到指定的指数并返回结果 |
$floor |
$floor运算符返回小于或等于指定数字的最大整数 |
$ln |
$ln运算符计算输入的自然对数 |
$log |
$log运算符计算指定基数的对数 |
$log10 |
$log 10 运算符计算基数 10 中的指定数字的日志 |
$multiply |
$multiply运算符乘以输入数值 |
$pow |
该 $pow 运算符计算升至指定指数幂的数值的值。 |
$round |
$round运算符将数字舍入到指定的小数位数。 |
$sqrt |
$sqrt运算符计算并返回输入数的平方根 |
$subtract |
$subtract运算符减去两个数字并返回结果。 |
$trunc |
$trunc运算符将数字截断为指定的小数位。 |
Index |
数组表达式
数组表达式运算符对数组和数组元素执行作。
| Description | |
|---|---|
$arrayElemAt |
$arrayElemAt返回指定数组索引处的元素。 |
$arrayToObject |
$arrayToObject允许将数组转换为单个文档。 |
$concatArrays |
$concatArrays用于将多个数组合并为一个数组。 |
$filter |
$filter运算符根据指定的条件筛选数组中的元素。 |
$indexOfArray |
$indexOfArray运算符用于搜索数组中的元素,并返回元素的第一个匹配项的索引。 |
$isArray |
$isArray运算符用于确定指定值是否为数组。 |
$map |
$map运算符允许向数组中的每个元素应用表达式。 |
$range |
$range运算符允许生成顺序整数数组。 |
$reduce |
$reduce运算符将表达式应用于数组中的每个元素,并将结果累积为单个值。 |
$reverseArray |
$reverseArray运算符用于反转数组中的元素顺序。 |
$slice |
$slice 运算符从数组中的任何元素开始返回数组的子集。 |
$sortArray |
$sortArray运算符有助于对数组中的元素进行排序。 |
$zip |
$zip运算符允许将两个或多个数组按元素合并到单个数组或数组中。 |
数组查询
数组查询运算符用于查询和筛选数组元素。
| Description | |
|---|---|
$all |
$all 运算符可帮助查找匹配所有元素的数组文档。 |
$elemMatch |
$elemMatch运算符返回完整的数组,限定条件至少包含一个匹配的数组元素。 |
$size |
$size 运算符用于查询数组字段具有指定数量元素的文档。 |
数组更新
数组更新运算符用于修改数组元素和结构。
| Description | |
|---|---|
$ |
$ 位置运算符标识要更新的数组中的元素,而无需显式指定数组中元素的位置。 |
$addToSet |
addToSet 运算符向数组中添加尚不存在的元素,同时确保集内元素的唯一性。 |
$each |
$each运算符用于在单个$addToSet更新作中向数组字段添加多个元素。$push |
$pop |
$pop运算符删除数组的第一个或最后一个元素。 |
$position |
$position用于指定应插入新元素的数组中的位置。 |
$[] |
$[] 运算符用于更新与查询条件匹配的数组中的所有元素。 |
$[identifier] |
$[identifier] 运算符用于使用与查询条件匹配的数组中的特定标识符更新所有元素。 |
$pull |
从数组中删除值的所有实例。 |
$pullAll |
$pullAll运算符用于从数组中删除指定值的所有实例。 |
$push |
$push运算符向文档中的数组添加指定值。 |
Bitwise
按位运算符对数字的二进制表示形式执行运算。
| Description | |
|---|---|
$bitAnd |
$bitAnd运算符对整数值执行按位 AND 运算,并将结果作为整数返回。 |
$bitNot |
$bitNot运算符对整数值执行按位 NOT 运算,并将结果作为整数返回。 |
$bitOr |
$bitOr运算符对整数值执行按位 OR 运算,并将结果作为整数返回。 |
$bitXor |
$bitXor运算符对整数值执行按位 XOR 运算。 |
按位查询
按位查询运算符用于根据按位作查询和筛选。
| Description | |
|---|---|
$bitsAllClear |
$bitsAllClear运算符用于匹配位掩码中指定的所有位位置都明确的文档。 |
$bitsAllSet |
bitsAllSet 命令用于匹配设置所有指定位位置的文档。 |
$bitsAnyClear |
$bitsAnyClear运算符匹配位掩码中任何指定位位置都明确的文档。 |
$bitsAnySet |
$bitsAnySet运算符返回任何指定位位置都设置为 1 的文档。 |
按位更新
按位更新运算符用于使用按位运算修改值。
| Description | |
|---|---|
$bit |
该 $bit 运算符用于对整数值执行按位运算。 |
比较查询
比较查询运算符用于比较值并创建布尔表达式。
| Description | |
|---|---|
$cmp |
$cmp运算符比较两个值 |
$eq |
$eq查询运算符将字段的值与指定值进行比较 |
$gt |
$gt查询运算符检索字段的值大于指定值的文档 |
$gte |
$gte 运算符检索字段值大于或等于指定值的文档 |
$in |
$in运算符将字段的值与指定值的数组匹配 |
$lt |
$lt运算符检索字段值小于指定值的文档 |
$lte |
$lte运算符检索字段值小于或等于指定值的文档 |
$ne |
$ne 运算符检索字段的值不等于指定值的文档 |
$nin |
$nin运算符检索字段值与值列表不匹配的文档 |
条件表达式
条件表达式运算符在表达式中提供控制流和条件逻辑。
| Description | |
|---|---|
$cond |
$cond运算符用于计算条件,并根据结果返回两个表达式之一。 |
$ifNull |
如果表达式解析为 null,$ifNull 运算符用于计算表达式并返回指定值。 |
$switch |
$switch运算符用于计算一系列条件,并根据计算结果为 true 的第一个条件返回值。 |
数据大小
数据大小运算符用于确定数据结构和值的大小。
| Description | |
|---|---|
$binarySize |
$binarySize运算符用于返回二进制数据字段的大小。 |
$bsonSize |
$bsonSize运算符在编码为 BSON 时以字节为单位返回文档的大小。 |
日期表达式
日期表达式运算符对日期和时间值执行作。
| Description | |
|---|---|
$dateAdd |
$dateAdd运算符将指定数量的时间单位(日、小时、月等)添加到日期。 |
$dateDiff |
$dateDiff运算符计算各种单位(如年、月、日等)中的两个日期之间的差异。 |
$dateFromParts |
$dateFromParts运算符从各个组件构造日期。 |
$dateFromString |
$dateDiff运算符将日期/时间字符串转换为日期对象。 |
$dateSubtract |
$dateSubtract运算符从日期减去指定的时间量。 |
$dateToParts |
$dateToParts运算符将日期分解为其各个部分,例如年、月、日等。 |
$dateToString |
$dateToString运算符将日期对象转换为格式化字符串。 |
$dateTrunc |
$dateTrunc运算符截断指定单位的日期。 |
$dayOfMonth |
$dayOfMonth运算符从日期中提取月份的日期。 |
$dayOfWeek |
$dayOfWeek运算符从日期中提取一周中的一天。 |
$dayOfYear |
$dayOfYear运算符从日期中提取一年中的一天。 |
$hour |
$hour运算符以介于 0 和 23 之间的数字返回日期的小时部分。 |
$isoDayOfWeek |
$isoDayOfWeek运算符以 ISO 8601 格式返回工作日编号,范围为 1(星期一)到 7(星期日)。 |
$isoWeek |
$isoWeek运算符以 ISO 8601 格式返回年份的周数,范围为 1 到 53。 |
$isoWeekYear |
$isoWeekYear运算符返回 ISO 8601 格式的年份编号,该格式可能与年份的开始日期或年底日期的日历年不同。 |
$millisecond |
$millisecond运算符从日期值中提取毫秒部分。 |
$minute |
$minute运算符从日期值中提取分钟部分。 |
$month |
$month运算符从日期值中提取月份部分。 |
$second |
$second运算符从日期值中提取秒部分。 |
$week |
$week运算符将日期的周数作为 0 到 53 之间的值返回。 |
$year |
$year运算符将日期的年份作为四位数返回。 |
元素查询
元素查询运算符用于根据元素的存在和类型查询文档元素。
| Description | |
|---|---|
$exists |
$exists运算符检索在其文档结构中包含指定字段的文档。 |
$type |
如果所选字段的类型为指定类型,则$type运算符检索文档。 |
评估查询
计算查询运算符用于计算表达式和执行动态作。
| Description | |
|---|---|
$expr |
$expr运算符允许在查询语言中使用聚合表达式,从而启用复杂的字段比较和计算。 |
$jsonSchema |
$jsonSchema运算符针对数据验证和结构强制的 JSON 架构定义验证文档。 发现支持的功能和限制。 |
$mod |
$mod 运算符对字段的值执行取模运算并选择具有指定结果的文档。 |
$regex |
$regex 运算符为查询中的模式匹配提供正则表达式功能,允许灵活的字符串匹配和搜索。 |
$text |
$text 运算符对索引字符串字段的内容执行文本搜索,从而启用全文搜索功能。 |
字段更新
字段更新运算符用于在更新作期间修改文档中的特定字段。
| Description | |
|---|---|
$currentDate |
$currentDate运算符将字段的值设置为当前日期,即日期或时间戳。 |
$inc |
$inc运算符按指定量递增字段的值。 |
$mul |
$mul运算符将字段的值乘以指定数字。 |
$rename |
$rename运算符允许在更新作期间重命名文档中的字段。 |
$setOnInsert |
仅当更新插入作导致插入新文档时,$setOnInsert运算符才会设置字段值。 |
Geospatial
地理空间运算符对地理数据和空间关系执行作。
| Description | |
|---|---|
$box |
$box 运算符使用坐标对为地理空间查询定义矩形区域。 |
$center |
$center 运算符使用旧坐标对为 $geoWithin 查询指定圆。 |
$centerSphere |
$centerSphere 运算符在 $geoWithin 查询中使用球面几何来指定圆形区域。 |
$geoIntersects |
$geoIntersects 运算符选择其位置字段与指定 GeoJSON 对象相交的文档。 |
$geometry |
$geometry 运算符指定用于地理空间查询的 GeoJSON 几何图形。 |
$geoWithin |
$geoWithin 运算符选择其位置字段完全位于指定几何图形中的文档。 |
$maxDistance |
$maxDistance 运算符指定地理空间查询中两个点之间的最大距离。 |
$minDistance |
$minDistance 运算符指定地理空间查询中两个点之间必需存在的最小距离。 |
$near |
$near 运算符返回位置字段靠近指定点的文档,按距离排序。 |
$nearSphere |
$nearSphere 运算符返回位置字段靠近球体上指定点的文档,文档按球面上的距离排序。 |
$polygon |
$polygon 运算符为地理空间查询定义多边形,使你可以在不规则的形状中找到位置。 |
文本表达式
文本表达式运算符用于表示聚合表达式中的文本值。
| Description | |
|---|---|
$literal |
$literal运算符返回指定值,而不将其分析为表达式,从而允许在聚合管道中使用文本值。 |
逻辑查询
逻辑查询运算符使用逻辑作合并布尔表达式。
| Description | |
|---|---|
$and |
$and运算符联接多个查询子句,并返回与所有指定条件匹配的文档。 |
$nor |
$nor运算符对表达式数组执行逻辑 NOR,并检索所有条件失败的文档。 |
$not |
$not运算符对指定的表达式执行逻辑 NOT作,选择与表达式不匹配的文档。 |
$or |
$or运算符使用逻辑 OR 联接查询子句,并返回与至少一个指定条件匹配的文档。 |
其他
其他运算符包括各种不符合其他类别的实用工具和帮助程序运算符。
| Description | |
|---|---|
$getField |
$getField运算符允许从文档检索指定字段的值。 |
$sampleRate |
$sampleRate运算符根据指定的概率率随机对集合中的文档进行采样,这对于统计分析和测试非常有用。 |
其他查询
其他查询运算符包括各种实用工具和帮助程序运算符,用于查询不适合其他类别。
| Description | |
|---|---|
$comment |
$comment运算符向查询添加注释,以帮助识别日志和探查器输出中的查询。 |
$natural |
$natural运算符强制查询使用集合中文档的自然顺序,从而控制文档排序和检索。 |
$rand |
$rand运算符生成介于 0 和 1 之间的随机浮点值。 |
对象表达式
对象表达式运算符对对象和对象属性执行作。
| Description | |
|---|---|
$mergeObjects |
$mergeObjects运算符将多个文档合并到单个文档中 |
$objectToArray |
objectToArray 命令用于将文档(对象)转换为键值对数组。 |
$setField |
setField 命令用于在嵌入文档中添加、更新或删除字段。 |
投影
投影运算符用于在文档中选择和转换字段。
| Description | |
|---|---|
$meta |
$meta运算符返回具有返回数据集的计算元数据列。 |
设置表达式
设置表达式运算符对被视为集的集和数组执行作。
| Description | |
|---|---|
$allElementsTrue |
如果数组中的所有元素的计算结果为 true,则 $allElementsTrue 运算符返回 true。 |
$anyElementTrue |
如果数组中的任何元素的计算结果为 true,则 $anyElementTrue 运算符返回 true。 |
$setDifference |
$setDifference运算符返回一个集,其中包含存在于一个集中但不存在于第二个集中的元素。 |
$setEquals |
如果两个集具有相同的不同元素,则 $setEquals 运算符返回 true。 |
$setIntersection |
$setIntersection运算符返回所有输入数组中显示的常见元素。 |
$setIsSubset |
$setIsSubset运算符确定一个数组是否为第二个数组的子集。 |
$setUnion |
$setUnion运算符返回一个数组,其中包含输入数组中的所有唯一元素。 |
时间戳表达式
时间戳表达式运算符对时间戳值执行作。
| Description | |
|---|---|
$tsIncrement |
$tsIncrement运算符从时间戳值中提取增量部分。 |
$tsSecond |
$tsSecond运算符从时间戳值中提取秒部分。 |
变量表达式
变量表达式运算符用于在表达式中定义和引用变量。
| Description | |
|---|---|
$let |
$let运算符允许定义用于指定表达式的变量,从而启用复杂计算并减少代码重复。 |
窗口运算符
窗口运算符对指定窗口中的一组文档执行计算。
| Description | |
|---|---|
$covariancePop |
$covariancePop运算符返回两个数值表达式的协变 |
$covarianceSamp |
$covarianceSamp 运算符返回两个数值表达式样本的协方差 |
$denseRank |
$denseRank运算符根据指定的排序顺序分配并返回分区中每个文档的位置排名 |
$derivative |
$derivative运算符计算指定窗口中字段值变化的平均速率。 |
$documentNumber |
$documentNumber 运算符根据指定的排序顺序分配并返回分区内每个文档的位置 |
$expMovingAvg |
$expMovingAvg 运算符根据指定数量的文档计算字段的移动平均值,以保持最高权重 |
$integral |
$integral 运算符会在指定范围内计算曲线下的面积,该范围内的文档将作为相邻文档参与计算。 |
$linearFill |
$linearFill运算符使用线性内插在文档序列中插入缺失的值。 |
$locf |
$locf运算符在窗口查询的分区中向前传播最后一个观察到的非 null 值。 |
$rank |
$rank运算符根据指定的排序顺序对分区中的文档进行排名。 |
$shift usage on DocumentDB |
一个窗口运算符,用于移动分区中的值并返回移位的值。 |