美文网首页
mongodb聚合管道运算符

mongodb聚合管道运算符

作者: 谁在烽烟彼岸 | 来源:发表于2019-03-27 17:38 被阅读0次

    1.算术表达式运算符

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

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

    数组表达式运算符

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

    布尔表达式运算符

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

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

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

    比较表达式运算符

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

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

    条件表达式运算符

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

    日期表达式运算符

    以下运算符返回日期对象或日期对象的组件:

    名称 描述
    $dateFromParts 给定日期的组成部分构造BSON Date对象。
    $dateFromString 将日期/时间字符串转换为日期对象。
    $dateToParts 返回包含日期组成部分的文档。
    $dateToString 以格式化字符串形式返回日期。
    $dayOfMonth 以1到31之间的数字返回日期的月中某天。
    $dayOfWeek 返回日期的星期几,作为1(星期日)和7(星期六)之间的数字。
    $dayOfYear 以1到366(闰年)之间的数字返回日期的日期。
    $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(1月)到12(12月)之间的数字返回日期的月份。
    $second 以0到60(闰秒)之间的数字返回日期的秒数。
    $toDate 将值转换为日期。4.0版中的新功能。
    $week 返回日期的周数,作为0(在一年的第一个星期日之前的部分周)和53(闰年)之间的数字。
    $year 以数字形式返回日期年份(例如2014年)。

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

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

    文字表达操作符

    名称 描述
    $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 返回包含出现在任何输入集中的元素的集合。

    字符串表达式运算符

    除了$concatASCII字符串之外,字符串表达式 只有明确定义的行为。

    $concat 无论使用何种字符,行为都是明确定义的。

    名称 描述
    $concat 连接任意数量的字符串。
    $dateFromString 将日期/时间字符串转换为日期对象。
    $dateToString 以格式化字符串形式返回日期。
    $indexOfBytes 搜索字符串以查找子字符串的出现并返回第一次出现的UTF-8字节索引。如果未找到子字符串,则返回-1
    $indexOfCP 搜索字符串以查找子字符串的出现并返回第一次出现的UTF-8代码点索引。如果未找到子字符串,则返回-1
    $ltrim 从字符串的开头删除空格或指定的字符。4.0版中的新功能。
    $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 访问文本搜索元数据。

    类型表达式运算符

    名称 描述
    $convert 将值转换为指定的类型。4.0版中的新功能。
    $toBool 将值转换为布尔值。4.0版中的新功能。
    $toDate 将值转换为日期。4.0版中的新功能。
    $toDecimal 将值转换为Decimal128。4.0版中的新功能。
    $toDouble 将值转换为double。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 返回数值的总和。忽略非数字值。

    累加器($project

    一些可用作$group舞台累加器的操作员也可以在 舞台上使用, $project但不能作为累加器使用。在$project阶段中使用时 ,这些运算符不会保持其状态,并且可以将单个参数或多个参数作为输入。

    在3.2版中更改。

    以下累加器运算符也可用于 $project$addFields阶段。

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

    变量表达式运算符

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

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

    名称 描述
    $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 一个三元运算符,用于计算一个表达式,并根据结果返回其他两个表达式之一的值。接受有序列表中的三个表达式或三个命名参数。
    $convert 将值转换为指定的类型。
    $dateFromParts 给定日期的组成部分构造BSON Date对象。
    $dateToParts 返回包含日期组成部分的文档。
    $dateFromString 返回日期/时间作为日期对象。
    $dateToString 以格式化字符串形式返回日期。
    $dayOfMonth 以1到31之间的数字返回日期的月中某天。
    $dayOfWeek 返回日期的星期几,作为1(星期日)和7(星期六)之间的数字。
    $dayOfYear 以1到366(闰年)之间的数字返回日期的日期。
    $divide 返回将第一个数除以第二个数的结果。接受两个参数表达式。
    $eq 返回true值是否相等。
    $exp e提高到指定的指数。
    $filter 选择数组的子集以返回仅包含与过滤条件匹配的元素的数组。
    $first 返回每个组的第一个文档中的值。仅在文档按定义的顺序定义时才定义订单。仅适用于$group舞台。
    $floor 返回小于或等于指定数字的最大整数。
    $gt true如果第一个值大于第二个值,则返回。
    $gte true如果第一个值大于或等于第二个值,则返回。
    $hour 以0到23之间的数字返回日期的小时。
    $ifNull 如果第一个表达式导致null结果,则返回第一个表达式的非null结果或第二个表达式的结果。空结果包含未定义值或缺少字段的实例。接受两个表达式作为参数。第二个表达式的结果可以为null。
    $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如果第一个值小于或等于第二个值,则返回。
    $ltrim 从字符串的开头删除空格或指定的字符。
    $map 将子表达式应用于数组的每个元素,并按顺序返回结果值的数组。接受命名参数。
    $max 返回每个组的最高表达式值。版本3.2中已更改:可在两个版本$group$project 阶段中使用。
    $mergeObjects 将多个文档合并为一个文档。
    $meta 访问文本搜索元数据。
    $min 返回每个组的最低表达式值。版本3.2中已更改:可在两个版本$group$project阶段中使用。
    $millisecond 以0到999之间的数字返回日期的毫秒数。
    $minute 以0到59之间的数字返回日期的分钟。
    $mod 返回第一个数字的余数除以第二个数字。接受两个参数表达式。
    $month 以1(1月)到12(12月)之间的数字返回日期的月份。
    $multiply 将数字相乘以返回产品。接受任意数量的参数表达式。
    $ne true如果值 相等则返回。
    $not 返回与其参数表达式相反的布尔值。接受单个参数表达式。
    $objectToArray 将文档转换为表示键值对的文档数组。
    $or true当其任何表达式求值时返回true。接受任意数量的参数表达式。
    $pow 将数字提高到指定的指数。
    $push 返回每个组的表达式值数组。仅适用于$group
    $range 根据用户定义的输入输出包含整数序列的数组。
    $reduce 将表达式应用于数组中的每个元素,并将它们组合为单个值。
    $reverseArray 返回一个数组,其元素的顺序相反。
    $rtrim 从字符串末尾删除空格或指定的字符。
    $second 以0到60(闰秒)之间的数字返回日期的秒数。
    $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 返回从第一个值中减去第二个值的结果。如果这两个值是数字,则返回差值。如果这两个值是日期,则返回以毫秒为单位的差异。如果这两个值是日期和以毫秒为单位的数字,则返回结果日期。接受两个参数表达式。如果这两个值是日期和数字,请首先指定日期参数,因为从数字中减去日期没有意义。
    $sum 返回数值的总和。忽略非数字值。版本3.2中已更改:可在两个版本$group$project 阶段中使用。
    $switch 评估一系列案例表达。当它找到一个求值的表达式时true$switch执行一个指定的表达式并中断控制流。
    $toBool 将值转换为布尔值。
    $toDate 将值转换为日期。
    $toDecimal 将值转换为Decimal128。
    $toDouble 将值转换为double。
    $toInt 将值转换为整数。
    $toLong 将值转换为long。
    $toObjectId 将值转换为ObjectId。
    $toString 将值转换为字符串。
    $toLower 将字符串转换为小写。接受单个参数表达式。
    $toUpper 将字符串转换为大写。接受单个参数表达式。
    $trim 从字符串的开头和结尾删除空格或指定的字符。
    $trunc 将数字截断为整数。
    $type 返回该字段的BSON数据类型。
    $week 返回日期的周数,作为0(在一年的第一个星期日之前的部分周)和53(闰年)之间的数字。
    $year 以数字形式返回日期年份(例如2014年)。
    $zip 将两个数组合并在一起。

    相关文章

      网友评论

          本文标题:mongodb聚合管道运算符

          本文链接:https://www.haomeiwen.com/subject/nahtbqtx.html