对数据库执行聚合查询。
方法定义
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, })
在文档使用中是否遇到以下问题
更多建议
匿名提交