Firebase 城市Firestore数据库的最佳策略

Firebase 城市Firestore数据库的最佳策略,firebase,google-cloud-firestore,Firebase,Google Cloud Firestore,在意大利,土地在政治上分为地区、省和市。例如,我住在利古里亚地区的萨沃纳省瓦拉泽市 我创建了一个Firestore数据库,它接受地址由下面的示例组成的企业。没有什么困难,因为我使用的外部服务可以提供一致和正确的地理数据。业务的其余信息由用户输入 现在我需要按地区和/或省和/或市搜索此业务数据库。要使用过滤器设置UI,我绝对需要只显示在db中有业务的地区、省和市,而不是所有可用的地区、省和市(仅供参考:意大利有21个地区、107个省和~8000个市) 纵观互联网,我知道最好的策略是创建一个新的集合

在意大利,土地在政治上分为地区、省和市。例如,我住在利古里亚地区的萨沃纳省瓦拉泽市

我创建了一个Firestore数据库,它接受地址由下面的示例组成的企业。没有什么困难,因为我使用的外部服务可以提供一致和正确的地理数据。业务的其余信息由用户输入

现在我需要按地区和/或省和/或市搜索此业务数据库。要使用过滤器设置UI,我绝对需要只显示在db中有业务的地区、省和市,而不是所有可用的地区、省和市(仅供参考:意大利有21个地区、107个省和~8000个市)

纵观互联网,我知道最好的策略是创建一个新的集合来存储有关位置的不同数据,与Business集合分开,以便能够更快地查找。因此,每次我添加或编辑一个企业时,我都会检查“搜索集合”(让我们这样命名)中是否存在该企业的地区、省和直辖市,如果不存在,则添加该企业

但如何构建这个集合呢

如果我使用市政当局作为键,我将快速查找市政当局本身(顶部将是8000条记录),但如果我需要按地区或省份搜索,结果很差,因为firestore无法“区分”结果(如果您想在SQL中可视化它,可以使用
从geocollection中选择DISTINCT province WHERE Region='Liguria'
),我必须在服务器上或最坏的情况下在客户端上执行此操作(最后一个选项不是)

我不知道是从地区出发,保持结构区域->省->市是一条路,还是从省出发,走中间路线

另一种方法是对地区、省和市进行单独收集


在性能和数据复杂性方面,我想问的是最佳解决方案是什么。

一个好方法是建立一个收集区域,然后每个区域都有一个收集省,每个省都有一个收集市


这些文档将地理区域的名称命名为ID,这将允许您按ID查找相应的集合。

我将尝试您建议的子集合方式。这确实是一个不错的策略,性能很好,逻辑简单。谢谢José