原文档位置:https://docs.mongodb.com/manual/reference/operator/aggregation/
1.$abs:取绝对值
{ $abs: <number> }
2.$add:字段相加
{ $add: [ <expression1>, <expression2>, ... ] }
3.$addToSet:仅能用于$group步骤下,返回去重并集后的数组
{ $addToSet: <expression> }
4.$allElementsTrue :将数组计算为一个集合,如果数组中没有元素为false,则返回true。否则,返回false。空数组返回true。
{ $allElementsTrue: [ <expression> ] }
5.$and:计算一个或多个表达式,如果所有表达式都为真,或者如果调用时没有参数表达式,则返回true。否则,$and返回false
{ $and: [ <expression1>, <expression2>, ... ] }
6.$arrayElemAt :返回指定数组索引中的元素
{ $arrayElemAt: [ <array>, <idx> ] }
7.$arrayToObject :将数组转化为单个文档
情况1:是一个数组,数组结构该如下:[[字段名,字段值],[字段名,字段值]]
情况2:是一个数组文档,数组文档结构该如下:[{'k':'字段名',‘v’:'字段值'},{'k':'字段名',‘v’:'字段值'}]
{ $arrayToObject: <expression> }
8.$avg:在$project阶段使用时,$avg返回每个文档的指定表达式或表达式列表的平均值
语法1:{ $avg: <expression> } expression为数组
语法2:{ $avg: [ <expression1>, <expression2> ... ] }
9.$ceil:返回大于或等于指定数字的最小整数。
{ $ceil: <number> }
10.$cmp:对比2个值,并返回-1或1或0
- 如果第一个值小于第二个值,则为-1。
- 如果第一个值大于第二个值,则为1
- 如果这两个值是等价的,则为0
{ $cmp: [ <expression1>, <expression2> ] }
11.$concat:连接字符串并返回合并后的字符串。
{ $concat: [ <expression1>, <expression2>, ... ] }
12.$concatArrays:连接数组以返回合并后的数组。
{ $concatArrays: [ <array1>, <array2>, ... ] }
13.$cond:判断条件,如果为true返回<true-case>,否则返回<false-case>
语法1:{ $cond: { if: <boolean-expression>, then: <true-case>, else: <false-case-> } }
语法2:{ $cond: [ <boolean-expression>, <true-case>, <false-case> ] }
14.$convert :将值转换为指定类型。input输入类型,to输出类型
{
$convert:
{
input: <expression>,
to: <type expression>,
onError: <expression>, // Optional.
onNull: <expression> // Optional.
}
}
15.$dateFromParts :给定日期的组成属性,构造并返回日期对象。
语法1:
{
$dateFromParts : {
'year': <year>, 'month': <month>, 'day': <day>,
'hour': <hour>, 'minute': <minute>, 'second': <second>,
'milliseconds': <ms>, 'timezone': <tzExpression>
}
}
语法2:
{
$dateFromParts : {
'isoWeekYear': <year>, 'isoWeek': <week>, 'isoDayOfWeek': <day>,
'hour': <hour>, 'minute': <minute>, 'second': <second>,
'milliseconds': <ms>, 'timezone': <tzExpression>
}
}
例子:
{ $dateFromParts: { 'year' : 2017, 'month' : 0, 'day': 1, 'hour' : 12 } }
//ISODate("2016-12-01T12:00:00Z")
16.$dayOfMonth:返回1到31之间的数字
{ date: <dateExpression>, timezone: <tzExpression> }
17.$dayOfWeek:返回1(星期日)到7(星期六)之间的数字
{ $dayOfWeek: <dateExpression> }
{ date: <dateExpression>, timezone: <tzExpression> }
18.$divide:将第一个数除以另一个数并返回结果。
{ $divide: [ <expression1>, <expression2> ] }
19.$eq :对比2个参数,并返回boolean
{ $eq: [ <expression1>, <expression2> ] }
20.$filter:根据指定的条件选择返回的数组子集。返回一个只有与条件匹配的元素的数组。返回的元素处于原始顺序。
{ $filter: { input: <array>, as: <string>, cond: <expression> } }