Nosql模型结构

您将如何构建您的 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 数据库)


鸿蒙传说
浏览 82回答 1
1回答

慕运维8079593

我需要查询 Games 集合并找到所选球队是主队或客队的所有比赛。Cloud Firestore 官方文档对这种查询非常明确。不幸的是,当涉及到 Firestore 时,有一些查询限制:Cloud Firestore 不支持以下类型的查询:逻辑或查询。在这种情况下,您应该为每个 OR 条件创建一个单独的查询,并将查询结果合并到您的应用程序中。因此,您无法查询集合以一次性查找所选球队是主队或客队的所有比赛。一种解决方法是查询您的数据库两次,然后将这些查询的结果合并到客户端。它并不完美,因为您需要查询两次,但我认为它可以解决问题。对于 Android,这是您可以在本地合并两个查询的方法:Firestore - 在本地合并两个查询但是,根据 Frank van Puffelen对同一主题的回答:OR 查询,因为这些需要跳过索引,这将无法保证性能。请注意,支持可能的 IN 查询子集的工作正在进行中,以便您可以查询类似“给我所有供应泰国或意大利美食的餐厅”之类的内容。您可以等到此功能可用,或者您可以使用我上面的解决方案。我应该通过 firestore 生成的 ID 引用团队还是应该使用团队名称?在大多数情况下,我们通常使用用户 ID 而不是名称,原因是名称可以更改而 ID 不能。但由您决定是按名称搜索还是按 ID 搜索更好。PS 如果您正在查找而不是"OR"查询查询"AND",请注意whereTo()允许链接多个调用。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java