【问题标题】:Multiple where queries that involve isGreaterThan or isLessThan on different fields in firestore在 Firestore 中的不同字段上涉及 isGreaterThan 或 isLessThan 的多个 where 查询
【发布时间】:2021-01-18 00:22:59
【问题描述】:

在为我的查询使用多个 where 子句时需要一些帮助,这些子句涉及多个字段上的“lessThan”和“greaterThan”。例如,假设我需要找到一家平均食品价格低于 15 且评分高于 3 的餐厅。要从 Firestore 中获取它,我会将其编码为:

Query = Firestore.instance.where("avgPrice" , "<", 15).where("rating" , ">", 3).orderBy("rating");

现在根据 Firestore 文档,这是不可能的,因为:

whereEqualTo() 以外的所有 where 过滤器必须位于同一字段中。

是否有任何成本效益高的解决方法,不需要我获取所有数据,是否有任何其他 SQL/NOSQL 数据库可以自己执行此类查询?

【问题讨论】:

    标签: firebase google-cloud-firestore nosql


    【解决方案1】:

    正如消息所说:您只能对单个字段进行关系操作。

    您可以在客户端执行额外的过滤,也可以添加额外的字段,以便您通过相等性检查执行其他过滤器。例如:

    Firestore.instance
      .where("avgPriceLessThan15", "=", true)
      .where("rating" , ">", 3)
      .orderBy("rating")
    

    【讨论】:

    • 所有NOSQL数据库都是这样吗?
    • Firestore 就是这种情况,它是我碰巧知道的 NoSQL 数据库之一,可以回答。我故意没有回答其他数据库,因为:1)我可能不太了解它们,2)在 Stack Overflow 上推荐数据库是题外话。
    猜你喜欢
    • 2020-11-21
    • 2019-04-08
    • 1970-01-01
    • 2021-08-14
    • 2022-01-05
    • 2019-04-05
    • 2020-08-01
    • 1970-01-01
    • 2020-07-14
    相关资源
    最近更新 更多