uncategorized

Operators in Aggregation Pipeline

MongoDB

阶段操作符(Stages)

  • $addFields: 添加字段
  • $bucket: 基于指定的表达式和边界把文档分组
  • $bucketAuto: 基于指定表达式把文档平均的分为指定数量的组
  • $collStats: 关于某个collection的统计数据
  • $count: 当前阶段的文档的数量
  • $facet: 对当前阶段的文档并行执行多个AggregationPipline,得到不同维度数据
  • $geoNear: 计算指定位置附近的点,结果按距离排序
  • $graphLookup: 对每一个输入文档递归搜索一个collection,在结果文档中添加一个数组字段保存遍历结果
  • $group: 类似SQL中的GROUP,对所有输入文档按一个表达式分组,对每组使用Accumulators
  • $indexStats: 索引相关统计数据
  • $limit: 取前N个文档
  • $listSessions: 列出system.sessions
  • $lookup: 左外连接(LEFT JOIN)另一个collection
  • $match: 筛选文档
  • $out: 把结果写入目标collection
  • $project: 把文档映射为另外一个文档,可以选取一些字段或排除一些字段或增加一些字段
  • $redact: 编辑文档,使用$cond条件语句返回$$DESCEND、$$PRUNE、$$KEEP
  • $replaceRoot: 替换文档
  • $sample: 取样指定数量的文档
  • $skip: 跳过开始部分的指定数量的文档
  • $sort: 排序
  • $sortByCount: 按指定表达式分组,计算每组文档数量并按数量降序排序
  • $unwind: 对每个文档的指定字段(数组)展开,生成数组长度个数的新文档

算术表达式操作符(Arithmetic Expression Operators)

  • $abs: 绝对值
  • $add: 加
  • $ceil: 向上取整
  • $devide: 除
  • $exp: e的指定指数次方
  • $floor: 向下取整
  • $ln: 自然对数
  • $log: 对数
  • $log10: 以10为底的对数
  • $mod: 取模
  • $multiply: 乘
  • $pow: 指数
  • $sqrt: 开平方
  • $subtract: 减
  • $trunc: 取整数

数组表达式操作符(Array Expression Operators)

  • $arrayElemAt: 取数组指定索引的元素
  • $arrayToObject: 转换键值对的数组为对象
  • $concatArrays: 连接数组
  • $filter: 筛选数组
  • $in: 判断一个元素是否在数组之中
  • $indexOfArray: 查询数组元素并返回索引
  • $isArray: 判断是否是数组
  • $map: 对每个文档应用一个表达式,返回新的文档
  • $objectToArray: 对象转换为键值对数组
  • $range: 生成指定范围的数字数组
  • $reduce: 处理数组每个元素,返回一个结果
  • $reverseArray: 反转数组顺序
  • $size: 返回数组长度
  • $slice: 返回数组一个子集
  • $zip: 合并多个数组

布尔表达式操作符(Boolean Expression Operators)

  • $and: 与
  • $or: 或
  • $not: 非

比较表达式操作符(Comparison Expression Operators)

  • $cmp: 比较运算
  • $eq: 相等
  • $ne: 不等
  • $gt: 大于
  • $gte: 大于等于
  • $lt: 小于
  • $lte: 小于等于

条件表达式操作符(Comparison Expression Operators)

  • $cond: 条件判断
  • $ifNull: 接受两个参数,第一个为空时返回第二个参数,否则返回第一个参数
  • $switch: 判断一系列条件,判断到某个条件为真时,执行对应的表达式并返回值

日期表达式操作符(Date Expression Operators)

  • $dateFromParts: 给定年月日等创建一个日期对象
  • $dateFromString: 转换日期字符串为日期对象
  • $dateToParts: 转换日期对象为年月日等字段
  • $dateToString: 转换日期为字符串
  • $dayOfMonth: 1~31
  • $dayOfWeek: 1~7 === 周日~周六
  • $dayOfYear: 1~366
  • $isoDayOfWeek: 1~7 === 周一~周日
  • $isoWeekYear: 第一周的周一的年份
  • $isoWeek: 1~53 周数
  • $millisecond: 毫秒 0~999
  • $second: 秒 0 ~ 60(60为闰秒时才有)
  • $hour: 0~23
  • $minute: 分钟 0~59
  • $week: 0 ~ 53
  • $month: 月 1~12
  • $year: 年份
  • $toDate: 转换为Date类型

字面量表达式操作符(Literal Expresion Operator)

  • $literal: 返回输入值,值不会被解析

对象表达式操作符(Object Expression Operators)

  • $mergeObjects: 合并对象
  • $objectToArray: 对象转换为数组形式的键值对

集合表达式操作符(Set Expression Operators)

  • $allElementsTrue: 如果所有元素为真,返回真,否则返回假
  • $anyElementsTrue: 存在一个元素为真,返回真,否则返回假
  • $setDifference: 集合A - 集合B
  • $setEquals: 集合A = 集合B
  • $setIntersection: 集合A ∩ 集合B
  • $setIsSubset: 判断集合A ∈ 集合B是否成立
  • $setUnion: 集合A ∪ 集合B

字符串表达式操作符(String Expression Operators)

除了$concat操作符,其他的操作符只对ASCII字符有良好的定义

  • $concat: 连接多个字符串
  • $dateFromString: 转换字符串为日期
  • $dateToString: 转换日期为字符串
  • $indexOfBytes: 搜索子字符串,返回utf-8编码所在的字节位置
  • $indexOfCP: 搜索子字符串,返回CodePoint的位置
  • $ltrim: 移除左边的指定字符或者空白
  • $rtrim: 移除右边的指定字符或者空白
  • $trim: 移除两边的指定字符或者空白
  • $split: 使用指定分隔符分割字符串为数组
  • $strLenBytes: 返回UTF-8编码时的字符串字节数
  • $strLenCP: 返回CodePoint的数量
  • $strcasecmp: 大小写敏感的字符串比较
  • $substrBytes: 按字节取字符串
  • $substrCP: 按code-point取字符串
  • $toLower: 小写字符串
  • $toUpper: 大写字符串
  • $toString: 转换为字符串

文本表达式运操作符(Text Expression Operator)

  • $meta: 访问文本搜索元数据,如:textScore

类型表达式运算符(Type Expression Operators)

MongoDB 4.0

  • $type: 返回值BSON类型
  • $convert: 转换为指定类型
  • $toBool: 转换为布尔值
  • $toDate: 转换为日期
  • $toDecimal: 转换为十进制(Decimal 128)
  • $toDouble: 双精度
  • $toInt: 整数
  • $toLong: 长整数
  • $toObjectId: ObjectId类型
  • $toString: 字符串

变量表达式操作符(Variable Expression Operators)

  • $let: 定义局部变量,并返回表达式的计算结果

累加器操作符(Accumulators)

  • $min: 取最小值
  • $max: 取最大值
  • $sum: 求和
  • $avg: 取平均
  • $first: 取第一个
  • $last: 取最后一个
  • $addToSet: 加入集合
  • $push: 加入数组
  • $stdDevPop: 取总体标准差
  • $stdDevSamp: 取样本标准差
Share