背景
实现业务数据的统计分析,需要对相关数据进行聚合查询,但当前微搭数据模型存在操作限制:单次查询存在 数量限制 以及 query 查询未提供聚合查询方法。本篇实践主要介绍如何用云函数的方式实现不限制数据量的聚合查询计数。


操作步骤
1. 您可以在 云开发开放平台 单击云函数 > 新建云函数。


2. 选择云函数配置以及填写名称,单击下一步 > 确定。


3. 云函数创建成功,单击创建的云函数名称。


4. 在函数代码中填写云函数代码。


云函数代码如下:
// 云函数端示例const cloudbase = require("@cloudbase/node-sdk")const app = cloudbase.init({env: cloudbase.SYMBOL_CURRENT_ENV})exports.main = async (event, context) => {const db = app.database()const $ = db.command.aggregateconst _ = db.commandconst countWithPagination = async (skip, limit) => {const res = await db.collection('lcap-data-4a7GsGTgR-xxxxxxxxxxx-preview').aggregate().match({rksl:_.gt(50)}).limit(limit).skip(skip).count('rkslCount').end()console.log(res.data)return res.data[0].rkslCount}// 初始化计数器和分页参数let totalCount = 0;let skip = 0;const limit = 1000; // 每页查询的记录数let hasMoreData = true;// 循环查询直到没有更多数据while (hasMoreData) {const count = await countWithPagination(skip, limit);totalCount += count;skip += limit;// 如果当前页的数据量小于每页限制,说明没有更多数据if (count < limit) {hasMoreData = false;}}return {total: totalCount};}
说明:
上述代码示例中,定义了一个
countWithPagination
方法,它使用数据模型的聚合方法 Aggregate.count 实现计数统计,然后通过 while
循环调用 countWithPagination
方法,实现单次数据量1000条的查询,直至查询完所有数据,循环停止执行。5. 保存云函数配置并安装依赖。


6. 单击保存并安装依赖后,按照提示创建依赖文件并复制相应的配置代码。


7. 新建云函数依赖文件,文件名称 package.json,按回车键确定。


8. 在依赖文件中复制上述步骤6中的依赖配置代码,并单击保存。


9. 测试云函数,单击测试,可以看到测试结果返回数据成功。


注意:
云函数测试失败存在以下情况:
代码数据模型链接配置有误,请重新检查。
确认云函数以及依赖是否保存成功,请单击下方保存并安装依赖重新保存。


10. 从微搭 APIs > 云函数 > 数据模型的调用链路可以参考文档:数据模型聚合查询-求和。

