在同一字段上存储多个查询

时间:2018-11-05 12:47:06

标签: firebase dart flutter google-cloud-firestore document-database

我们正在构建一个应用,其中需要显示用户发布的附近帖子。自发布以来不超过4个小时,仅应显示该帖子。由于firestore不提供地理查询,因此我必须进行搜索,以返回特定正方形中的所有帖子。这是我当前的查询:

collection("posts")
        .where("creation", isGreaterThan: DateTime.now().subtract(Duration(hours: 4)))
        .where("location", isLessThan: cornor1OfSquare)
        .where("location", isGreaterThan: cornor2OfSquare)

此查询的问题在于,不允许在不同字段上添加多个where语句过滤。

由于在我们的应用程序中有数以百万计的帖子,因此无法通过本地属性和服务器端属性进行过滤。

还有其他方法吗?例如,重组服务器上的数据,以使诸如此类的查询成为可能?我研究了但仅找到具有“简单”数据的解决方案。但是我有一个时间戳记和一个GeoPoint字段,这使其变得更加复杂。

我想到的第二种方法是使用云功能,但是我不知道该怎么做以及它是否是最好的解决方案。

我在Dart / Flutter中编程。

1 个答案:

答案 0 :(得分:1)

Cloud Firestore不支持不同字段上的范围过滤器。 您最多会为每个OR条件创建单独的查询,然后合并查询结果。

有关更多信息,请参见此链接:https://firebase.google.com/docs/firestore/query-data/queries?hl=en-us