【问题标题】:How do I 'filter in' firestore data satisfying 'where not equal to' condition? [closed]如何“过滤”满足“不等于”条件的 Firestore 数据? [关闭]
【发布时间】:2019-08-31 10:35:06
【问题描述】:

我正在尝试过滤 Firestore 中的数据并将其显示在我的应用程序中。我可以在 firestore api 中看到 “等于” 条件,但我需要 “不等于”

我该怎么做?

【问题讨论】:

  • 请提供代码示例。
  • in firestore --> db.collection("allOrders").whereEqualTo("offersProviderId", id ) 但我想要所有不包含Id的订单
  • 没有。从你已经尝试过的。
  • 如果您可以更具体地了解您要查询的内容,或许还有您的 Firestore 结构示例和您尝试过的代码,我们或许可以提供解决方案。否则,问题就太模糊了。
  • Firestore 目前不支持不等式查询。见stackoverflow.com/questions/47251919/…

标签: android firebase kotlin google-cloud-firestore


【解决方案1】:

docs 可以看出Where 查询没有not equal to 运算符,所以这是不可能的

where() 方法采用三个参数:要过滤的字段、比较操作和值。比较可以是 、>= 或数组包含。对于 iOS、Android 和 Java,比较运算符在方法中显式命名。

我建议尝试以一种备用字段存储某种布尔值以供您的查询使用的方式来构建您的数据。或者,您可以获取完整的集合并在之后过滤掉。假设我们谈论的是单个文档,这应该不会比手术贵很多

【讨论】:

  • 其实是可以的。您可以使用 运算符来“围绕”您不想要的项目。例如;假设您存储字母 A、B、C、D、E 等,并且您想要所有不是“N”的字母。这是通过查询所有小于 N 的字母和所有大于 N 的字母来完成的。但真正的解决方案将取决于结构是什么以及要查询的内容。
  • 有效点,虽然如果这非常有效,我会感到惊讶 - 但正如你所说,这完全取决于被查询的结构。
  • @Jay - 由于 Firestore 不支持 or 在查询中,这将是您需要合并客户端的 2 个单独的查询。
  • @AjahnCharles 正确,如链接所示。
  • 是否有一种数据结构可以消除不相等查询的需要但提供相同的功能?我当前的结构如下,一个“工作”集合,其中每个文档都有一个名为“createdBy”的字段,其中包含创建该文档的用户的 uid,我如何列出我当前未创建的所有工作文档登录用户而不组合查询?我可以对我的数据结构进行哪些更改?
猜你喜欢
  • 2020-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多