每日/每周/每月排名的最佳Firestore结构,用于步行/跑步应用中的步骤

时间:2019-05-24 08:25:40

标签: google-cloud-firestore

我有一个应用程序,可以将用户每10分钟执行的步骤添加到Firestore中。

这样的文档是在用户的步骤集合下创建的:

/users/{uid}/steps/{stepId} = {
   created: 1558685078, //epoch seconds
   steps: 5,
}

我想获得以下排名:

  1. 执行步骤最多的前10位用户持续24小时。
  2. 前7天执行最多操作的前10位用户。
  3. 上个月执行最多操作的前10位用户。
  4. 还有一种获取用户当前在上述排名中排名的方法。

现在这在SQL中将是微不足道的,因为您可以使用GROUP,SUM和COUNT快速获得排名,并在过去的24小时内创建> now_epoch-60 * 60 * 24时获得WHERE。

但是Firestore如何实现呢?

我当前的想法是每隔一小时左右在服务器端更新一次排名,但我想更接近实时。

或者在创建步骤doc时触发云功能以更新用户的计数器,例如user.steps_last_24_hours。但是我无法完全想象这将如何工作,或者无法说明原因。

有什么想法吗? :)

0 个答案:

没有答案