您将如何构建您的 Cloud Firestore 数据库。我有团队、竞技场和游戏的集合:public class Team { public String name; public String homeCourtId;}public class Game{ public String matchId; public String date; public Arena arena; public Team homeTeam; public Team awayTeam;}public class Arena { public String name; public String phone; public String email; public String address; public String postalCode; public String city; public String district; public String cordLat; public String cordLong;}一个团队可以是游戏中的主队或客队,并且游戏总是有一个竞技场。所以目前我的想法是构建这个,因为所有游戏都进入游戏集合,当我想找出一个团队的所有游戏时,我需要查询游戏集合并找到所选团队是主队或客队的所有游戏。我应该通过 Firestore 生成的 ID 引用团队,还是应该使用团队名称?任何我可以阅读更多相关信息的指针?他们是在 Firestore 中构建我的数据的更好方法吗?(或任何 nosql 数据库)
1 回答
慕运维8079593
TA贡献1876条经验 获得超5个赞
我需要查询 Games 集合并找到所选球队是主队或客队的所有比赛。
Cloud Firestore 官方文档对这种查询非常明确。不幸的是,当涉及到 Firestore 时,有一些查询限制:
Cloud Firestore 不支持以下类型的查询:
逻辑或查询。在这种情况下,您应该为每个 OR 条件创建一个单独的查询,并将查询结果合并到您的应用程序中。
因此,您无法查询集合以一次性查找所选球队是主队或客队的所有比赛。
一种解决方法是查询您的数据库两次,然后将这些查询的结果合并到客户端。它并不完美,因为您需要查询两次,但我认为它可以解决问题。
对于 Android,这是您可以在本地合并两个查询的方法:
但是,根据 Frank van Puffelen对同一主题的回答:
OR 查询,因为这些需要跳过索引,这将无法保证性能。请注意,支持可能的 IN 查询子集的工作正在进行中,以便您可以查询类似“给我所有供应泰国或意大利美食的餐厅”之类的内容。
您可以等到此功能可用,或者您可以使用我上面的解决方案。
我应该通过 firestore 生成的 ID 引用团队还是应该使用团队名称?
在大多数情况下,我们通常使用用户 ID 而不是名称,原因是名称可以更改而 ID 不能。但由您决定是按名称搜索还是按 ID 搜索更好。
PS 如果您正在查找而不是"OR"
查询查询"AND"
,请注意whereTo()
允许链接多个调用。
添加回答
举报
0/150
提交
取消