我正在处理一个有趣的场景,我不确定它可以工作,还是会很好用 . 在我当前的项目中,我试图找到一种在firestore中使用geopoints的有效方法 . 文档可以包含geopoints字段的直接方法非常自我解释且易于查询 . 但是,我不得不为单个文档处理不同数量的地理点(文章) . 这是因为可能需要在多个地理区域中提供特定内容 .

例如,一篇文章可能只需要在纽约,丹佛和西雅图提供 . 一般来说,对每个位置使用一个地理位置并按半径搜索是一项非常标准的任务,如果我只希望该文章在西雅图可用,但现在它需要在另外两个地方可用 .

我目前看到的解决方案是使用数组并使用geopoints填充它 . 结构看起来像这样:

articleText (String),
sortTime (Timestamp),
tags (Array)
 - ['tagA','tagB','tagC','tagD'],
availableLocations (Array)
 - [(Geopoint), (Geopoint), (Geopoint), (Geopoint)]

然后执行查询以从特定postTime开始获取特定Geopoint 10英里范围内的所有内容 .

我不知道的是,如果将地理位置放在一个数组中运行良好,或者应该避免使用其他数据结构 .

我考虑过复制每个地理位置的文章文档,但是如果需要定义多个位置,那么这个文档的扩展性不会很好 . 我还考虑创建一个“引用”集合,其中每个点都是包含文章的documentID的文档,但这会导致阅读每个参考文档,然后阅读实际文档 . 基本上两个文档读取1个内容,根据Firestore定价模型可能会变得昂贵,并且可能会不必要地减慢速度 .

我是否以可接受的方式接近这个?还有其他方法可以更有效地工作吗?