【问题标题】:Firestore multiple querys on the same field [duplicate]Firestore在同一字段上的多个查询[重复]
【发布时间】:2019-04-08 20:00:38
【问题描述】:

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

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

这个查询的问题是,它不允许添加多个where语句过滤不同的字段。

不可能通过一个本地属性和一个服务器端的属性进行过滤,因为我们的应用中有数百万个帖子。

还有其他方法可以做到这一点吗?例如重构服务器上的数据,使这样的查询成为可能?我进行了研究,但只找到了“简单”数据的解决方案。但是我有一个 Timestamp 和一个 GeoPoint 字段,这使得它更加复杂。

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

我正在使用 Dart/Flutter 编程。

【问题讨论】:

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


【解决方案1】:

Cloud Firestore 不支持不同字段的范围过滤器。 您通常为每个 OR 条件创建单独的查询并合并查询结果。

查看此链接了解更多信息:https://firebase.google.com/docs/firestore/query-data/queries?hl=en-us

【讨论】:

  • 这应该是一个 AND Query not and OR,第二个关于答案的评论!
  • 重点是 Cloud Firestore 不支持在不同字段上使用范围过滤器的查询。
猜你喜欢
  • 2020-11-21
  • 1970-01-01
  • 2020-07-14
  • 1970-01-01
  • 1970-01-01
  • 2021-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多