AggregateCommand.map(value: any): Object

支持端:小程序 2.7.4, 云函数 0.8.1, Web

聚合操作符。类似 JavaScript Array 上的 map 方法,将给定数组的每个元素按给定转换方法转换后得出新的数组。

参数

value: any

返回值

Object

API 说明

语法如下:

  1. db.command.aggregate.map({
  2. input: <expression>,
  3. as: <string>,
  4. in: <expression>
  5. })
字段说明
input一个可以解析为数组的表达式
as可选,用于表示数组各个元素的变量,默认为 this
in一个可以应用在给定数组的各个元素上的表达式,各个元素的名字由 as 参数决定(参数名需加 $$ 前缀,如 $$this

示例代码

假设集合 stats 有如下记录:

  1. {
  2. "_id": 1,
  3. "sales": [ 1.32, 6.93, 2.48, 2.82, 5.74 ]
  4. }
  5. {
  6. "_id": 2,
  7. "sales": [ 2.97, 7.13, 1.58, 6.37, 3.69 ]
  8. }

将各个数字截断为整形,然后求和

  1. const $ = db.command.aggregate
  2. db.collection('stats').aggregate()
  3. .project({
  4. truncated: $.map({
  5. input: '$sales',
  6. as: 'num',
  7. in: $.trunc('$$num'),
  8. })
  9. })
  10. .project({
  11. total: $.sum('$truncated')
  12. })
  13. .end()

返回结果如下:

  1. { "_id": 1, "index": 16 }
  2. { "_id": 2, "index": 19 }