Android 如何构造firebase数据库以获得类似关系数据库的结果

Android 如何构造firebase数据库以获得类似关系数据库的结果,android,firebase,google-cloud-firestore,Android,Firebase,Google Cloud Firestore,我正在为我的Android和iOS应用程序使用firebase Cloud Firestore。我被困在如何构建我的数据库中 基本上,我有一个包含许多用户的“组织”集合,对于每个用户,我希望节省每天的出勤时间和休假时间 问题是我想生成报告,使我能够获取每个用户的每日出勤率、所有用户的单日出勤率以及所有用户的全日出勤率。 所以我试着这样做:在用户内部,我会有一个“出席”集合,然后每个文档都是当天的Unix时间戳(以确保它是唯一的)。然后保存“出席时间”和“离开时间”等字段。路径如下“/organi

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

基本上,我有一个包含许多用户的“组织”集合,对于每个用户,我希望节省每天的出勤时间和休假时间

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

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

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

但我仍然无法让所有用户全天出席!
这在关系数据库(如SQL)中很容易实现。你知道怎么在firebase里做吗

如果您想跟踪所有用户的出勤情况,您需要的是。这允许您查询名为
考勤
的所有集合中的文档

由于Firestore中的查询只能查看其查询的集合中的数据,因此您可能必须将父集合(您的
用户
组织
)中的一些数据复制到每个考勤文档中才能进行查询。这种类型的数据复制在NoSQL数据库中也很正常

最后,如果您需要执行许多自组织查询,您可能需要考虑使用更适合该用例的数据库。例如,使用Firestore处理需要扩展到大量用户的直接到客户端的交互是很常见的,但随后使用BigQuery进行数据的即席查询。甚至还有一个Firebase扩展,使这更容易