使用聚合函数实现打卡排行榜
发布于 4 年前 作者 yuanping 5431 次浏览 来自 分享

效果展示

先上图,有图有真相。

需求实现分析

需求:根据打卡天数进行排序,实现累积排行榜,查询前100名。

这里涉及到两张表:用户表,打卡记录表

实现思路

  1. 用户表和打卡记录表通过openid进行联合查询
  2. 统计每个用户到打卡次数
  3. 根据次数进行排序
  4. 查询前100名

代码实现

根据以上思路实现代码如下:

exports.main = async (event, context) => {
// 获取操作符
const $ = db.command.aggregate
// 用户表和打卡记录表联合查询
let res = await db.collection(‘用户表’).aggregate()
.lookup({
from: ‘打卡记录表’,
localField: ‘_openid’,
foreignField: ‘_openid’,
as: ‘list’,
})
// 统计每个人打卡次数
.project({
userInfo:1,
_openid:1,
size: $.size(’$list’)
})
// 进行排序
.sort({
size: -1,
})
// 限制100名
.limit(100)
.end()

return res
}

总结

这里面用到了4个关键函数:lookup、project、sort、limit。
lookup:官方文档传送门
project:官方文档传送门
sort:官方文档传送门
limit:官方文档传送门

2 回复

如果觉得有收获,欢迎点赞收藏~

回到顶部