Firestore在读取文档时是否将“重新读取”​​计算在内?

时间:2019-06-15 19:45:38

标签: swift firebase firebase-realtime-database google-cloud-firestore geofire

我正在尝试使用Geofirestore从中心位置以给定半径查询结果。据我所知,GeoFire不能限制查询结果的数量。我对这个问题的解决方案是逐步增加半径,直到获得X数量的结果。似乎通过这样做,我将多次重新查询结果,这可能会花费很大。如果我查询10个结果但想要20个结果,Firestore会认为这是30多次读取吗?

1 个答案:

答案 0 :(得分:0)

我在Firestore上知道的geoquery实现都使用geohash作为实现,这意味着它们将纬度和经度合并为一个值,然后可以用来过滤特定地理范围内的所有文档。虽然从技术上说可以通过在查询中添加limit(...)来限制返回的文档数,但结果将不会按照它们到查询中心的距离排序。因此,您很可能只在查询范围的一个区域中获得结果,而不是最近的文档。

Firestore会向您收取从服务器读取的所有文档的费用。由于它具有本地缓存​​,因此可能不是您后续查询的所有文档,因为来自上一个查询的文档可能已经在本地缓存中。

那是:请注意,使用地理哈希来进行地理查询会导致文档的过度阅读。在我的实验中,这可能导致读取的文档比查询范围内多3到10倍。我强烈建议您阅读/监视Firestore上的地理哈希和地理查询,例如,通过观看我前段时间就此主题进行的演讲:https://www.youtube.com/watch?v=mx1mMdHBi5Q