聚合搜索
聚合主要用来处理数据(统计平均值,求和等)并返回计算后的数据结果。
流水线/管道
聚合是一个流水线式的批处理作业,初始文档经过多个阶段的流水线处理后,得到转换后的聚合结果。
假设已有一个集合 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.aggregate;
exports.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 字段平均值。