【问题标题】:Get documents by tags通过标签获取文档
【发布时间】:2020-10-25 17:01:48
【问题描述】:

我一直在使用 Firestore 构建 Android 应用程序,但遇到了下一个我不知道如何处理的限制。

我需要通过存储在数组字段中的标签来检索文档。但是,只能有一个whereArrayContains每个查询强>。我应该如何通过多个标签获取文档?

你能想出什么聪明的解决办法吗?

【问题讨论】:

  • 最后一个问题是技术建议,在 Stack Overflow 上是题外话。我建议删除它以防止您的问题被关闭。

标签: android firebase kotlin google-cloud-firestore logical-and


【解决方案1】:

一个查询只能有一个whereArrayContainsAny 条件,但最多可以有10 个whereArrayContains 条件。

来自query limitations上的文档:

  • Cloud Firestore 为逻辑 OR queries 提供有限支持。 inarray-contains-any 运算符支持单个字段上最多 10 个相等 (==) 或 array-contains 条件的逻辑 OR。对于其他情况,请为每个 OR 条件创建单独的查询,并将查询结果合并到您的应用中。
  • 每个查询只能使用一个inarray-contains-any 子句。您不能在同一查询中同时使用 inarray-contains-any

【讨论】:

  • 你确定吗?文档有不同的说法:一个查询只能有一个 whereArrayContains() 过滤器,它不能与 whereArrayContainsAny() 结合使用。 firebase.google.com/docs/reference/kotlin/com/google/firebase/… 还是我误解了它?
  • 我也发现了这个问题Could we have more than one array-contains filter? - 文档似乎不一致。
  • 您共享的链接还指出,可以使用 array-contains-any 运算符将同一字段上的最多 10 个 array-contains 子句与逻辑 OR 组合在一起。 array-contains-any 查询返回给定字段是包含一个或多个比较值的数组的文档 - 如果这只是一个逻辑AND :-(
  • 不是最漂亮的选项,但我想我现在最多可以使用十个附加字段来表示标签。这应该足够了......我找到了一个替代品。
猜你喜欢
  • 2011-11-21
  • 2013-12-01
  • 2012-07-14
  • 2015-11-02
  • 2011-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多