全部产品

aggregate

对数据库执行聚合查询。

方法定义

aggregate(pipeline: object[], options?: object): Promise<MongoResult>

请求参数

字段名

类型

必填

说明

pipeline

Array

聚合查询对象。

options

Object

控制项。

options参数定义:

字段名

类型

必填

说明

options.explain

Boolean

是否返回执行计划。

options.allowDiskUse

Boolean

是否在聚合查询执行的过程中使用磁盘存储临时数据。

options.bypassDocumentValidation

Boolean

是否允许绕过文档验证。

options.raw

Boolean

是否将结果作为BSON Buffer返回。

options.promoteLongs

Boolean

是否将long数据类型提升为Number。

options.promoteValues

Boolean

是否将BSON值的类型提升为本地类型。

options.promoteBuffers

Boolean

是否将BSON Buffer 转换为Node Buffer。

options.collation

Object

指定更新的排序顺序。

示例

  • 不对数据进行分组,统计orders集合中所有total字段的和,并且要求在1000ms内返回结果否则报错。

    mpserverless.db.collection('orders').aggregate([
      {
        $group:
        {
          _id : null,
          total:{$sum: "$total"}
        }
      }
     ], {
     maxTimeMS: 1000
    })
  • 查询2019年第一季度(1.1~3.31)已完成订单(status字段值为completed)的订单总金额(商品费用total和运费shippingFee之和)和订单总数,并且允许绕过文档验证。

    mpserverless.db.collection('orders').aggregate([
     // 1.利用match匹配状态和日期条件
      {
       $match: {status: "completed", orderDate: {
         $gte: ISODate("2019-01-01"),
          $lt: ISODate("2019-04-01")
        }}
      },
      // 2.聚合订单总金额、总运费、总数量
      {
       $group:{
         _id: null,
          total: {$sum: "$total"},
          shippingFee: {$sum: "$shippingFee"},
          count:( $sum : 1)
        }
      },
      // 3.计算总金额
      {
       $project: {
         grandTotal: {$add: ["$total", "shippingFee"]},
          count: 1,
          _id: 0
        }
      }
    ], {
      bypassDocumentValidation: true,
    })