AggregateCommand.sum(value: Expression): Object

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

聚合操作符。计算并且返回一组字段所有数值的总和。

参数

value: Expression

表达式

返回值

Object

API 说明

sum 的使用形式如下:

  1. db.command.aggregate.sum(<表达式>)

表达式可以传入指定字段,也可以传入指定字段组成的列表。sum 会自动忽略非数字值。如果字段下的所有值均是非数字,那么结果返回 0。若传入数字常量,则当做所有记录该字段的值都给给定常量,在聚合时相加,最终值为输入记录数乘以常量。

示例代码

假设代表商品的集合 goods 的记录如下:price 代表商品销售额,cost 代表商品成本

  1. { "cost": -10, "price": 100 }
  2. { "cost": -15, "price": 1 }
  3. { "cost": -10, "price": 10 }

单独字段

借助 sum 可以计算所有商品的销售总和,代码如下:

  1. const $ = db.command.aggregate
  2. db
  3. .collection('goods')
  4. .aggregate()
  5. .group({
  6. _id: null,
  7. totalPrice: $.sum('$price')
  8. })
  9. .end()

返回的数据结果如下:销售额是 111

  1. { "_id": null, "totalPrice": 111 }

字段列表

如果需要计算所有商品的利润总额,那么需要将每条记录的 costprice 相加得到此记录对应商品的利润。最后再计算所有商品的利润总额。

借助 sum,代码如下:

  1. const $ = db.command.aggregate
  2. db
  3. .collection('goods')
  4. .aggregate()
  5. .group({
  6. _id: null,
  7. totalProfit: $.sum(
  8. $.sum(['$price', '$cost'])
  9. )
  10. })
  11. .end()

返回的数据结果如下:利润总额为 76

  1. { "_id": null, "totalProfit": 76 }