跳到主要内容

操作符

2025年02月27日
柏拉文
越努力,越幸运

前言


索引操作符

一、算术表达式操作符


1.1 $abs

$abs 返回一个数字的绝对值。

1.2 $add

$add 添加数字以返回总和,或添加数字和日期以返回新日期。如果添加数字和日期,则将数字视为毫秒。接受任意数量的参数表达式,但一个表达式最多只能解析为一个日期。

1.3 $ceil

$ceil 返回大于或等于指定数字的最小整数。

1.4 $divide

$divide 返回第一个数字除以第二个数字的结果。接受两个参数表达式。

1.5 $exp

$exp 将 e 提升到指定的指数。

1.6 $floor

$floor 返回小于或等于指定数字的最大整数。

1.7 $ln

$ln 计算数字的自然对数。

1.8 $log

$log 以指定基数计算数字的对数。

1.9 $log10

$log10 计算一个数字以 10 为底的对数。

1.10 $mod

$mod 返回第一个数字除以第二个数字的余数。接受两个参数表达式。

1.11 $multiply

$multiply 将数字相乘以返回乘积。接受任意数量的参数表达式。

语法

{ $multiply: [ <expression1>, <expression2>, ... ] }

1.12 $pow

$pow 将一个数字提升到指定的指数。

1.13 $round

$round 将数字舍入到整数或指定的小数位。

1.14 $sqrt

$sqrt 计算平方根。

1.15 $subtract

$subtract 返回第一个值减去第二个值后的结果。如果这两个值均为数字,则返回差值。如果这两个值均为日期,则返回以毫秒为单位的差值。如果这两个值一个为日期而另一个为数字(以毫秒为单位),则返回生成的日期。接受两个参数表达式。如果这两个值一个为日期而另一个为数字,请先指定日期参数,因为用数字减去日期没有意义。

1.16 $trunc

$trunc 将数字截断为整数或指定的小数位。

二、数组表达式操作符


2.1 $arrayElemAt

$arrayElemAt 返回位于指定数组索引处的元素。

语法

{ $arrayElemAt: [ <array>, <idx> ] }
  • array: 数组

  • idx: 索引、下标

2.2 $arrayToObject

$arrayToObject 将键值对数组转换为文档。

2.3 $concatArrays

$concatArrays 连接数组以返回连接后的数组。

2.4 $filter

$filter 选择数组的子集,以返回仅包含与筛选条件匹配的元素的数组。

2.5 $firstN

$firstN 从数组开头返回指定数量的元素。与 $firstN 累加器不同。

2.6 $in

$in 返回一个布尔值,它可表示指定的值是否在数组中。

2.7 $indexOfArray

$indexOfArray 搜索数组中出现的指定值,并返回首次出现的数组索引。数组索引从零开始。

2.8 $isArray

$isArray 确定操作数是否为数组。返回一个布尔值。

2.9 $lastN

$lastN 从数组末尾返回指定数量的元素。与 $lastN 累加器不同。

2.10 $map

$map 对数组的每个元素应用子表达式,并按顺序返回生成值的数组。接受已命名的参数。

2.11 $maxN

$maxN 返回数组中 n 个最大值。与 $maxN 累加器不同。

2.12 $minN

$minN 返回数组中 n 个最小值。与 $minN 累加器不同。

2.13 $objectToArray

$objectToArray 将文档转换为表示键值对的文档数组。

2.14 $range

$range 根据用户定义的输入,输出一个包含整数序列的数组。

2.15 $reduce

$reduce 将表达式应用于数组中的每个元素,并将它们组合成一个值。

2.16 $reverseArray

$reverseArray 返回元素顺序相反的数组。

2.17 $size

$size 返回数组中元素的个数。接受单个表达式作为参数。

2.18 $slice

$slice 返回数组的子集。

2.19 $sortArray

$sortArray 对数组的元素进行排序。

2.20 $zip

$zip 将两个数组进行合并。

三、按位操作符


3.1 $bitAnd

$bitAnd 返回对 int 或long 值的数组执行按位 and 操作的结果。

3.2 $bitNot

$bitNot 返回对单个参数或包含单个 int 或 long 值的数组执行按位 not 操作的结果。

3.3 $bitOr

$bitOr 返回对 int 或long 值的数组执行按位 or 操作的结果。

3.4 $bitXor

$bitXor 返回对 int 和 long 值的数组执行按位 xor(排他或)操作的结果。

四、布尔表达式操作符


4.1 $and

$and 仅当所有表达式的计算结果均为 true 时才返回 true。接受任意数量的参数表达式。

语法

{ $and: [ <expression1>, <expression2>, ... ] }

用法

db.example.find({ $expr: { $and: [ { $regexFindAll: { input: "$name", regex: /^/ } }, { $gt: [ "$price", 4800 ] } ] }});

4.2 $not

$not 返回与参数表达式相反的布尔值。接受单个参数表达式。

4.3 $or

$or 当任何表达式的计算结果为 true 时,返回 true。接受任意数量的参数表达式。

五、比较表达式操作符


5.1 $cmp

$cmp 如果两个值相等,则返回 0;如果第一个值大于第二个值,则返回 1;如果第一个值小于第二个值,则返回 -1。

5.2 $eq

$eq 比较两个值并返回, 当数值相等时, 返回 true。当值不相等时, 返回 false$eq 会同时比较值和类型,使用指定的 BSON 比较顺序来比较不同类型的数。

语法

{ $eq: [ <expression1>, <expression2> ] }

用法

db.inventory.insertMany( [
{ _id : 1, item : "abc1", description: "product 1", qty: 300 },
{ _id : 2, item : "abc2", description: "product 2", qty: 200 },
{ _id : 3, item : "xyz1", description: "product 3", qty: 250 },
{ _id : 4, item : "VWZ1", description: "product 4", qty: 300 },
{ _id : 5, item : "VWZ2", description: "product 5", qty: 180 }
] )

db.inventory.aggregate(
[
{
$project:
{
item: 1,
qty: 1,
qtyEq250: { $eq: [ "$qty", 250 ] }, // 使用 $eq 操作符确定 qty 是否等于 250
_id: 0
}
}
]
)

5.3 $gt

$gt 如果第一个值大于第二个值,则返回 true

语法

{ $gt: [ <expression1>, <expression2> ] }

用法

db.inventory.insertMany( [
{ _id : 1, item : "abc1", description: "product 1", qty: 300 },
{ _id : 2, item : "abc2", description: "product 2", qty: 200 },
{ _id : 3, item : "xyz1", description: "product 3", qty: 250 },
{ _id : 4, item : "VWZ1", description: "product 4", qty: 300 },
{ _id : 5, item : "VWZ2", description: "product 5", qty: 180 }
] )

db.inventory.aggregate(
[
{
$project:
{
item: 1,
qty: 1,
qtyGt250: { $gt: [ "$qty", 250 ] }, // 使用 $gt 操作符确定 qty 是否大于 250
_id: 0
}
}
]
)

5.4 $gte

$gte 如果第一个值大于等于第二个值,则返回 true。

5.5 $lt

$lt 如果第一个值小于第二个值,则返回 true

语法

{ $lt: [ <expression1>, <expression2> ] }

用法

db.inventory.insertMany( [
{ _id : 1, item : "abc1", description: "product 1", qty: 300 },
{ _id : 2, item : "abc2", description: "product 2", qty: 200 },
{ _id : 3, item : "xyz1", description: "product 3", qty: 250 },
{ _id : 4, item : "VWZ1", description: "product 4", qty: 300 },
{ _id : 5, item : "VWZ2", description: "product 5", qty: 180 }
] )

db.inventory.aggregate(
[
{
$project:
{
item: 1,
qty: 1,
qtyLt250: { $lt: [ "$qty", 250 ] }, // 使用 $lt 操作符来确定 qty 是否小于 250
_id: 0
}
}
]
)

5.6 $lte

$lte 如果第一个值小于等于第二个值,则返回 true。

5.7 $ne

$ne 如果值不相等,则返回 true。

六、条件表达式操作符


6.1 $cond

$cond 一种三元运算符,它可用于计算一个表达式,并根据结果返回另外两个表达式之一的值。接受有序列表中的三个表达式或三个已命名的参数。

6.2 $ifNull

$ifNull 返回第一个表达式的非空结果;或者,如果第一个表达式生成空结果,则返回第二个表达式的结果。Null 结果包含未定义值或缺失字段的情况。接受两个表达式以作为参数。第二个表达式的结果可能为 null。

6.3 $switch

$switch 对一系列 case 表达式求值。当它找到计算结果为 true 的表达式时,$switch 会执行指定表达式并脱离控制流。

七、自定义聚合表达式操作符


7.1 $accumulator

$accumulator 定义自定义累加器函数。

7.2 $function

$function 定义自定义函数。

八、数据大小操作符


8.1 $binarySize

$binarySize 返回给定字符串或二进制数据值内容的大小(以字节为单位)。

8.2 $bsonSize

$bsonSize 以字节为单位返回给定文档(即 bsontype Object) 的大小(当编码为 BSON 时)。

九、日期表达式操作符


9.1 $dateAdd

$dateAdd 向日期对象添加多个时间单位。

9.2 $dateDiff

$dateDiff 返回两个日期之间的差值。

9.3 $dateFromParts

$dateFromParts 根据日期的组成部分构造一个 BSON 日期对象。

9.4 $dateFromString

$dateFromString 将日期/时间字符串转换为日期对象。

9.5 $dateSubtract

$dateSubtract 从日期对象中减去多个时间单位。

9.6 $dateToParts

$dateToParts 返回包含日期组成部分的文档。

9.7 $dateToString

$dateToString 以格式化字符串的形式返回日期。

9.8 $dateTrunc

$dateTrunc 截断日期。

9.9 $dayOfMonth

$dayOfMonth 以介于 1 和 31 之间的数字返回某一日期的“月中的某一天”。

9.10 $dayOfWeek

$dayOfWeek 以 1(星期日)和 7(星期六)之间的数字形式返回以星期表示的日期。

9.11 $dayOfYear

$dayOfYear 以 1 到 366(闰年)之间的数字形式返回返回日期的年月日。

9.12 $hour

$hour 以数字形式返回日期中的小时部分(0 到 23)。

9.13 $isoDayOfWeek

$isoDayOfWeek 以 ISO 8601 格式返回工作日数字,范围为 1(星期一)到 7(星期日)。

9.14 $isoWeek

$isoWeek 以 ISO 8601 格式返回周数,范围从 1 到 53。周数从 1 开始,即包含一年中第一个星期四的那个星期(星期一到星期日)。

9.15 $isoWeekYear

$isoWeekYear 以 ISO 8601 格式返回年份号。一年从第一周的星期一 (ISO 8601) 开始,到最后一周的星期日 (ISO 8601) 结束。

9.16 $millisecond

$millisecond 以 0 到 999 之间的数字形式返回日期的毫秒数。

9.17 $minute

$minute 返回日期的分钟数(0 到 59)。

9.18 $month

$month 以 1(一月)到 12(十二月)之间的数字形式返回日期的月份。

9.19 $second

$second 以 0 到 60 之间的数字返回日期的秒数(跳秒)。

9.20 $toDate

$toDate 将数值转换为日期。

9.21 $week

$week 以 0(一年中第一个星期日之前的部分周)和 53(闰年)之间的数字形式返回日期的周数。

9.22 $year

$year 以数字形式返回日期的年份(例如 2014)。

9.23 $add

$add 添加数字和日期以返回新日期。如果添加数字和日期,则将数字视为毫秒。接受任意数量的参数表达式,但一个表达式最多只能解析为一个日期。

9.24 $subtract

$subtract 返回第一个值减去第二个值后的结果。如果这两个值均为日期,则返回以毫秒为单位的差值。如果这两个值一个为日期而另一个为数字(以毫秒为单位),则返回生成的日期。接受两个参数表达式。如果这两个值一个为日期而另一个为数字,请先指定日期参数,因为用数字减去日期没有意义。

十、字面值表达式操作符


10.1 $literal

$literal 返回一个值而不进行解析。用于聚合管道可解释为表达式的值。例如,对以美元符号 ()开头的字符串使用) 开头的字符串使用 literal 表达式,以避免解析为字段路径。

十一、其他操作符


11.1 $getField

$getField 从文档中返回指定字段的值。您可以使用 getField检索名称中包含句点(.)或以美元符号(getField 检索名称中包含句点 (.) 或以美元符号 () 开头的字段的值。

11.2 $rand

$rand 返回介于 0 和 1 之间的随机浮点数。

11.3 $sampleRate

$sampleRate 以给定的采样率随机选择文档。虽然每次运行所选文件的确切数量各不相同,但所选数量近似于以文件总数百分比表示的采样率。

11.4 $toHashedIndexKey

$toHashedIndexKey 使用 MongoDB 用于创建哈希索引的相同哈希函数计算并返回输入表达式的哈希值。

十二、对象表达式操作符


12.1 $mergeObjects

$mergeObjects 将多个文档合并为一个文档。

12.2 $objectToArray

$objectToArray 将文档转换为表示键值对的文档数组。

12.3 $setField

$setField 添加、更新或删除文档中的指定字段。您可以使用 setField添加、更新或删除名称包含句点(.)或以美元符号(setField 添加、更新或删除名称包含句点 (.) 或以美元符号 () 开头的字段。

十三、集表达式操作符


13.1 $allElementsTrue

$allElementsTrue 如果集合中没有元素计算结果为 false ,则返回 true,否则返回 false。接受单个参数表达式。

13.2 $anyElementTrue

$anyElementTrue 如果集合中的任何元素的计算结果为 true,则返回 true;否则,返回 false。接受单个参数表达式。

13.3 $setDifference

$setDifference 返回集合,其中的元素出现在第一个集合中,但没有出现在第二个集合中;即执行第二个集合相对于第一个集合的相对补集。实际接受两个参数表达式。

13.4 $setEquals

$setEquals 如果输入集具有相同的不同元素,则返回 true。接受两个或多个参数表达式。

13.5 $setIntersection

$setIntersection 返回一个集,其中包含出现在所有输入集中的元素。接受任意数量的参数表达式。

13.6 $setIsSubset

$setIsSubset 如果第一个集的所有元素都出现在第二个集中,包括当第一个集等于第二个集时,即不是严格子集,则返回 true。实际接受两个参数表达式。

13.7 $setUnion

$setUnion 返回一个集,其中包含出现在任何输入集中的元素。

十四、字符串表达式操作符


14.1 $concat

$concat 连接任意数量的字符串。

14.2 $dateFromString

$dateFromString 将日期/时间字符串转换为日期对象。

14.3 $dateToString

$dateToString 以格式化字符串的形式返回日期。

14.4 $indexOfBytes

$indexOfBytes 搜索字符串中出现的子字符串,并返回首次出现的 UTF-8 字节索引。如果未找到该子字符串,则返回 -1。

14.5 $indexOfCP

$indexOfCP 在字符串中搜索子字符串的出现位置,并返回第一次出现时的 UTF-8 码位索引。如果未找到子字符串,则返回 -1。

14.6 $ltrim

$ltrim 删除字符串开头和结尾的空白或指定字符。

14.7 $regexFind

$regexFind 将正则表达式应用于字符串,并返回第一个匹配子字符串的信息。

14.8 $regexFindAll

$regexFindAll 将正则表达式 (regex) 应用于字符串,并返回有关所有匹配子字符串的信息。

14.9 $regexMatch

$regexMatch 将正则表达式 (regex) 应用于字符串并返回一个布尔值,它可表示是否已找到匹配项。

14.10 $replaceOne

$replaceOne 替换给定输入中匹配字符串的第一个实例。

14.11 $replaceAll

$replaceAll 替换给定输入中匹配字符串的所有实例。

14.12 $rtrim

$rtrim 删除字符串结尾的空白或指定字符。

14.13 $split

$split 根据分隔符将字符串拆分为子字符串。返回子字符串数组。如果在字符串中找不到分隔符,则返回包含原始字符串的数组。

14.14 $strLenBytes

$strLenBytes 返回字符串中 UTF-8 编码的字节数。

14.15 $strLenCP

$strLenCP 返回字符串中 UTF-8 代码点的数量。

14.16 $strcasecmp

$strcasecmp 执行不区分大小写的字符串比较并返回:如果两个字符串相等,则返回 0;如果第一个字符串大于第二个字符串,则返回 1;如果第一个字符串小于第二个字符串,则返回 -1。

14.17 $substr

$substr 已弃用。使用substrBytessubstrBytes 或 substrCP。

14.18 $substrBytes

$substrBytes 返回字符串的子串。从字符串中指定的 UTF-8 字节索引(从零开始)处的字符开始,持续指定的字节数。

14.19 $substrCP

$substrCP 返回字符串的子串。从字符串中指定 UTF-8 代码点 (CP) 索引(从零开始)处的字符开始,持续指定的代码点数。

14.20 $toLower

$toLower 将字符串转换为小写。接受单个参数表达式。

14.21 $toString

$toString 将值转换为字符串。

14.22 $trim

$trim 删除字符串开头和结尾的空白或指定字符。

14.23 $toUpper

$toUpper 将字符串转换为大写。接受单个参数表达式。

十五、文本表达式操作符


15.1 $meta

$meta 访问与聚合操作相关的每个文档的可用元数据。

十六、时间戳表达式操作符


16.1 $tsIncrement

$tsIncrement 以 long 形式返回时间戳中的递增序数。

16.2 $tsSecond

$tsSecond 以 long 形式返回时间戳中的秒数。

十七、三角函数表达式操作符


17.1 $sin

$sin 返回以弧度为单位测量的某一值的正弦值。

17.2 $cos

$cos 返回以弧度为单位测量的某一值的余弦。

17.3 $tan

$tan 返回以弧度为单位来测量的某一值的正切值。

17.4 $asin

$asin 以弧度为单位返回值的反正弦。

17.5 $acos

$acos 以弧度为单位返回值的反余弦。

17.6 $atan

$atan 以弧度为单位返回某一值的反切值(弧正切值)。

17.7 $atan2

$atan2 以弧度为单位返回 y / x 的反正切,其中 y 和 x 分别为传递给该表达式的第一个值和第二个值。

17.8 $asinh

$asinh 以弧度为单位返回数值的反双曲正弦(双曲弧正弦)值。

17.9 $acosh

$acosh 以弧度为单位返回数值的反双曲余弦(双曲弧余弦)值。

17.10 $atanh

$atanh 以弧度为单位返回数值的反双曲正切(双曲弧切)值。

17.11 $sinh

$sinh 返回以弧度为单位来测量的某一值的双曲正弦值。

17.12 $cosh

$cosh 返回以弧度为单位的值的双曲余弦值。

17.13 $tanh

$tanh 以弧度为单位返回数值的双曲正切值。

17.14 $degreesToRadians

$degreesToRadians 将值从度数转换为弧度。

17.15 $radiansToDegrees

$radiansToDegrees 将值从弧度转换为度数。

十八、类型表达式操作符


18.1 $convert

$convert 将数值转换为指定类型。

18.2 $isNumber

$isNumber 如果指定表达式解析为 integer、decimal、double 或 long,则返回布尔值 true。

如果表达式解析为任何其他 BSON 类型、null 或缺失字段,返回布尔值 false。

18.3 $toBool

$toBool 将值转换为布尔值。

18.4 $toDate

$toDate 将数值转换为日期。

18.5 $toDecimal

$toDecimal 将值转换为 Decimal128。

18.6 $toDouble

$toDouble 将值转换为 double。

18.7 $toInt

$toInt 将值转换为整数。

18.8 $toLong

$toLong 将值转换为长整数。

18.9 $toObjectId

$toObjectId 将值转换为 ObjectId。

18.10 $toString

$toString 将值转换为字符串。

18.11 $type

$type 返回字段的 BSON 数据类型。

18.12 $toUUID

$toUUID 将字符串转换为 UUID。

十九、聚合累加器操作符


19.1 $accumulator

$accumulator 返回用户定义的累加器函数的结果。

19.2 $addToSet

$addToSet 返回每个群组的唯一表达式值数组。未定义数组元素的排序。5.0 版中的更改:可在 $setWindowFields 阶段使用。

19.3 $avg

$avg 返回数值的平均值。忽略非数字值。 5.0 版中的更改:可在 $setWindowFields 阶段使用。

语法

// $avg将一个指定表达式作为其操作数
{ $avg: <expression> }

// $avg将指定表达式的列表作为其操作数
{ $avg: [ <expression1>, <expression2> ... ] }

19.4 $bottom

$bottom 根据指定的排序顺序返回组内的底部元素。5.2 版本中的新增功能。可在 $group$setWindowFields 阶段使用。

19.5 $bottomN

$bottomN 根据指定的排序顺序,返回群组内后 n 个字段的聚合。5.2 版本中的新增功能。可在 $group$setWindowFields 阶段使用。

19.6 $count

$count 返回群组中的文档数。有别于 $count 管道阶段。5.0 版新增功能:可在 $group$setWindowFields 阶段使用。

语法

{ $count: { } }
  • $count 不接受任何参数。$count 在功能上等同于在 $group 阶段使用 { $sum : 1 }

19.7 $first

$first 返回群组中第一个文档的表达式结果。5.0 版中的更改:可在 $setWindowFields 阶段使用。

19.8 $firstN

$firstN 返回群组内前 n 个元素的聚合。仅当文档按定义的顺序排列时才有意义。与 $firstN 数组操作符不同。5.2 版新增功能:可在 $group、表达式和 $setWindowFields 阶段使用。

19.9 $last

$last 返回群组中最后一份文档的表达式结果。5.0 版中的更改:可在 $setWindowFields 阶段使用。

19.10 $lastN

$lastN 返回群组内后 n 个元素的聚合。仅当文档按定义的顺序排列时才有意义。与 $lastN 数组操作符不同。5.2 版新增功能:可在 $group、表达式和 $setWindowFields 阶段使用。

19.11 $max

$max 返回每个群组的最大表达式值。5.0 版中的更改:可在 $setWindowFields 阶段使用。

语法

{ $max: <expression> }

19.12 $maxN

$maxN 返回群组中 n 个最大值元素的聚合。与 $maxN 数组操作符不同。5.2 版本中的新增功能。在 $group$setWindowFields 中可用,也可作为表达式使用。

19.13 $median

$median 返回中位数(第 50 百分位数)的近似标量值。7.0 版本中的新增功能。此操作符可在以下阶段用作累加器: $group$setWindowFields 它也可用作聚合表达式。

19.14 $mergeObjects

$mergeObjects 返回通过组合每个组的输入文档创建的文档。

19.15 $min

$min 返回每个群组的最小表达式值。5.0 版中的更改:可在 $setWindowFields 阶段使用。

语法

{ $min: <expression> }

19.16 $minN

$minN 返回组中 n 个最小值元素的聚合。与 $minN 数组操作符不同。5.2 版本中的新增功能。在 $group$setWindowFields 中可用,也可作为表达式使用。

19.17 $percentile

$percentile 返回与指定的各百分位数一一对应的标量值数组。7.0 版本中的新增功能。 此操作符可在以下阶段用作累加器:$group$setWindowFields 它也可用作聚合表达式。

19.18 $push

$push 返回每组中文档的大量表达式值。5.0 版中的更改:可在 $setWindowFields 阶段使用。

19.19 $stdDevPop

$stdDevPop 返回输入值的总体标准偏差。5.0 版中的更改:可在 $setWindowFields 阶段使用。

19.20 $stdDevSamp

$stdDevSamp 返回输入值的样本标准偏差。5.0 版中的更改:可在 $setWindowFields 阶段使用。

19.21 $sum

$sum 返回数值的总和。忽略非数字值。5.0 版中的更改:可在 $setWindowFields 阶段使用。

语法

// 用作累加器
{ $sum: <expression> }

// 不用作累加器
{ $sum: [ <expression1>, <expression2> ... ] }

用法

{ $sum: 1 } 统计分组文档数量

19.22 $top

$top 根据指定的排序顺序返回群组内第一个元素。 5.2 版本中的新增功能。可在 $group$setWindowFields 阶段使用。

19.23 $topN

$topN 根据指定的排序顺序,返回群组内前 n 个字段的聚合。5.2 版本中的新增功能。 可在 $group$setWindowFields 阶段使用。

二十、变量表达式操作符


20.1 $let

$let 定义要在子表达式范围内使用的变量,并返回这些子表达式的结果。接受已命名的参数。

接受任意数量的参数表达式。

二十一、窗口运算符


21.1 $addToSet

$addToSet 返回对每份文档应用表达式所产生的所有唯一值的数组。

5.0 版中的更改:可在 $setWindowFields 阶段使用。

21.2 $avg

$avg 返回指定表达式的平均值。忽略非数字值。5.0 版中的更改:可在 $setWindowFields 阶段使用。

21.3 $bottom

$bottom 根据指定的排序顺序返回组内的底部元素。

5.2 版本中的新增功能。

可在 groupgroup 和 setWindowFields 阶段使用。

21.4 $bottomN

$bottomN 根据指定的排序顺序,返回群组内后 n 个字段的聚合。

5.2 版本中的新增功能。

可在 groupgroup 和 setWindowFields 阶段使用。

21.5 $count

$count 返回群组或窗口中的文档数。

有别于 $count 管道阶段。

版本 5.0 中的新增功能。

21.6 $covariancePop

$covariancePop 返回两个数值表达式的总体协方差。

版本 5.0 中的新增功能。

21.7 $covarianceSamp

$covarianceSamp 返回两个数值表达式的样本协方差。

版本 5.0 中的新增功能。

21.8 $denseRank

$denseRank 返回某文档在 $setWindowFields 阶段分区中相对于其他文档的位置(称为排名)。这些排名没有差异。并列可获得相同排名。

版本 5.0 中的新增功能。

21.9 $derivative

$derivative 返回指定窗口内的平均变化率。

版本 5.0 中的新增功能。

21.10 $documentNumber

$documentNumber 返回文档在 $setWindowFields 阶段分区中的位置(称为文档编号)并列会导致相邻文件编号不同。

版本 5.0 中的新增功能。

21.11 $expMovingAvg

$expMovingAvg 返回数值表达式的指数移动平均值。

版本 5.0 中的新增功能。

21.12 $first

$first 返回组或 窗口 中第一个文档的 表达式 结果。

5.0 版中的更改:可在 $setWindowFields 阶段使用。

21.13 $integral

$integral 返回曲线下面积的近似值。

版本 5.0 中的新增功能。

21.14 $last

$last 返回组或 窗口 中最后一个文档的 表达式 结果。

5.0 版中的更改:可在 $setWindowFields 阶段使用。

21.15 $linearFill

$linearFill 使用线性插值并根据相邻的字段值来填充窗口中的 null 和缺失字段。

可在 $setWindowFields 阶段使用。

5.3 版本中的新增功能。

21.16 $locf

$locf 最后一次的观察结果被延续了下来。将窗口中 null 和缺失字段的值设置为该字段的最后一个非 null 值。

可在 $setWindowFields 阶段使用。

5.2 版本中的新增功能。

21.17 $max

$max 返回对每份文档应用表达式后的最小值。

5.0 版中的更改:可在 $setWindowFields 阶段使用。

21.18 $min

$min 返回对每份文档应用表达式后的最小值。

5.0 版中的更改:可在 $setWindowFields 阶段使用。

21.19 $minN

$minN 返回组中 n 个最小值元素的聚合。与 $minN 数组操作符不同。

5.2 版本中的新增功能。

groupgroup 、 setWindowFields中可用,也可作为表达式使用。

21.20 $push

$push 返回对每个文档应用表达式后所得值的数组。

5.0 版中的更改:可在 $setWindowFields 阶段使用。

21.21 $rank

$rank 返回一个文档在 $setWindowFields 阶段分区中相对于其他文档的位置(称为排名)。

版本 5.0 中的新增功能。

21.22 $shift

$shift 返回在 $setWindowFields 阶段的分区中,应用于目标文档的表达式的值。目标文档通过与当前文档的相对位置进行指定。

版本 5.0 中的新增功能。

21.23 $stdDevPop

$stdDevPop 返回对每个文档应用数值表达式所得的总体标准差。

5.0 版中的更改:可在 $setWindowFields 阶段使用。

21.24 $stdDevSamp

$stdDevSamp 返回对每个文档应用数值表达式所得的样本标准差。

5.0 版中的更改:可在 $setWindowFields 阶段使用。

21.25 $sum

$sum 返回对每份文档应用数值表达式所得的总和。

5.0 版中的更改:可在 $setWindowFields 阶段使用。

21.26 $top

$top 根据指定的排序顺序返回群组内第一个元素。

5.2 版本中的新增功能。

可在 groupgroup 和 setWindowFields 阶段使用。

21.27 $topN

$topN 根据指定的排序顺序,返回群组内前 n 个字段的聚合。

5.2 版本中的新增功能。

可在 groupgroup 和 setWindowFields 阶段使用。