评论

使用聚合函数实现打卡排行榜

使用聚合函数实现打卡排行榜

效果展示

先上图,有图有真相。

需求实现分析

需求:根据打卡天数进行排序,实现累积排行榜,查询前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:官方文档传送门

最后一次编辑于  2020-08-13  
点赞 4
收藏
评论

3 个评论

  • 陈宇明
    陈宇明
    2020-08-13

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

    2020-08-13
    赞同 1
    回复
  • 晓
    2021-03-18

    大佬,知道怎么弄动态排行榜吗,查询更多的时候,把数量更多的放到上面去

    2021-03-18
    赞同
    回复
  • admin
    admin
    2020-08-13

    已阅

    2020-08-13
    赞同
    回复
登录 后发表内容