聚合主要用来处理数据(统计平均值,求和等)并返回计算后的数据结果。
流水线/管道
聚合是一个流水线式的批处理作业,初始文档经过多个阶段的流水线处理后,得到转换后的聚合结果。
假设已有一个集合 books,其中包含以下格式记录:
[{"_id": "xxx","category": "Novel","name": "The Catcher in the Rye","onSale": true,"sales": 80}]
聚合示例如下:
// 云函数端示例const cloudbase = require("@cloudbase/node-sdk")const app = cloudbase.init()const db = app.database()const $ = db.command.aggregateexports.main = async (event, context) => {const res = await db.collection('books').aggregate().match({onSale: true // 是否正在出售}).group({// 按 category 字段分组_id: '$category',// 让输出的每组记录有一个 avgSales 字段,其值是组内所有记录的 sales 字段的平均值avgSales: $.avg('$sales')}).end()return {res}}
说明
第一阶段:match 阶段过滤出了集合中的文档数据(
onSale:true
表示找出正在出售的书籍)并传给下一个阶段。
第二阶段:group 阶段基于 category
字段进行分组,并统计出每组中所有记录的 sales
字段平均值。