【问题标题】:Firestore not-equal (!=) count as range filterFirestore 不等于 (!=) 计为范围过滤器
【发布时间】:2021-09-20 17:40:01
【问题描述】:

我正在尝试在已经具有范围过滤器(geohash 查询)的查询中使用不等于 (!=) 运算符,认为这应该与等于 (==) 查询的行为相同。

但在运行该查询时,我收到以下错误消息提示:

未处理的异常:初始 orderBy() 字段“[[FieldPath([location, geohash]), false]][0][0]”必须与 where() 字段参数“FieldPath([ expire_at])" 调用不等式运算符时。

现在,我了解到,由于索引的工作方式,firestore 仅允许每个查询使用一个范围过滤器。我不明白的是为什么这里的not-equal 操作被认为是一个范围过滤器。

换句话说:not-equal 操作只是.where(x > y).where(x < y) 的合成糖吗?

【问题讨论】:

  • 你能提供更多细节吗?也许您正在尝试的查询。

标签: google-cloud-firestore


【解决方案1】:

orderBy 用于帮助过滤和处理索引,以便您获得与您的需求最相关的内容。所以错误是orderBy的字段必须与whereinequality字段相关。

您必须首先在inequality 字段上使用orderBy,只要确保生成正确的复合查询即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-19
    • 1970-01-01
    • 2014-12-30
    • 2013-11-01
    • 2017-02-12
    相关资源
    最近更新 更多