我正在处理一个有趣的场景,我不确定它是否能够正常工作,或者能够正常工作。在我目前的项目中,我试图找到一种在firestore中使用geopoints的有效方法。文档可以包含 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定价模型可能会变得昂贵,并且可能会不必要地降低速度。
我是否以可接受的方式接近这个?还有其他方法可以更有效地工作吗?