【问题标题】:how to structure firebase database to get results like relational databases如何构建firebase数据库以获得关系数据库之类的结果
【发布时间】:2020-09-13 11:29:50
【问题描述】:

我正在为我的 Android 和 iOS 应用程序使用 firebase Cloud Firestore。我不知道如何构建我的数据库。

基本上我有一个包含许多用户的“组织”集合,并且对于每个用户,我想节省每天的出勤时间和离开时间。

问题是我想生成报告,让我可以获取每个用户的每日出勤率、所有用户的单日出勤率以及所有用户的全天出勤率。

所以我尝试了这个:在用户内部我会有一个“出席”集合,然后每个文档都是当天的 Unix 时间戳(以确保它是唯一的)。然后保存诸如attend_time 和 leave_time...等字段。路径是这样的“/organization/android/users/3PRs42gRFzZQhLKcUhpf4wPMRV43/attendance/1590271200”

然后我需要为所有用户获取一天的出勤率,所以我这样做了:现在我有另一个路径“/organization/android/attendance”,在出勤率内部,我存储当天的 Unix 时间戳,然后用户 ID 然后是他的出勤率。现在我节省了两次出勤率。

但我仍然无法为所有用户全天出勤! 这在像 SQL 这样的关系数据库中很容易。知道如何在firebase中做到这一点吗?

【问题讨论】:

    标签: android firebase google-cloud-firestore


    【解决方案1】:

    如果您想跟踪所有用户的出勤率,您正在寻找collection group query。这允许您从名为 attendance 的所有集合中查询文档。

    由于 Firestore 中的查询只能查看其查询的集合中的数据,您可能必须将父集合(您的 usersorganizations)中的一些数据复制到每个考勤文档中以允许查询。这种类型的数据重复在 NoSQL 数据库中也很正常。

    最后:如果您需要执行许多临时查询,您可能需要考虑为更适合该用例的那些查询使用数据库。例如,使用 Firestore 处理需要扩展到大量用户的直接到客户端的交互是很常见的,然后使用 BigQuery 来临时查询该数据。甚至还有一个 Firebase 扩展,automatically exports to BigQuery 可以让这更容易。

    【讨论】:

      猜你喜欢
      • 2012-07-10
      • 2018-04-07
      • 1970-01-01
      • 1970-01-01
      • 2011-04-02
      • 2018-04-21
      • 1970-01-01
      • 2013-09-13
      相关资源
      最近更新 更多