【问题标题】:How do I query Cloud Firestore for an array that matches all values, but in any order?如何在 Cloud Firestore 中查询与所有值匹配但以任意顺序匹配的数组?
【发布时间】:2020-08-16 04:45:28
【问题描述】:

我在 Firestore 中的不同文档中有一个数组,如下所示:

颜色: [蓝、红、绿]

我想查询以找到与我的输入相匹配的文档,颜色:[Red, Green, Blue]。但它不应返回包含更多内容的文档,即 [Blue, Red, Green, Yellow]。它必须是完全匹配的,但我不一定知道数组中项目的顺序。这甚至可能吗?

【问题讨论】:

    标签: google-cloud-firestore


    【解决方案1】:

    首先,为每个包含数组长度的文档添加一个字段,以便您可以根据数组长度进行过滤。然后为具有正确长度的数组创建一个复合查询,并为每种颜色添加一个“array-contains”子句。

    请注意,您要搜索的特定数组不得包含任何重复元素,否则此方法将无法正常工作。

    【讨论】:

      【解决方案2】:

      使用您现在拥有的数据进行一次查询是不可能实现您的要求的。你要么必须:

      1. 确保数组的顺序,以便您可以使用相等过滤器来提供包含完全相同数据的数组。
      2. 将数组重写为映射,因此您可以对同一组键/值对使用相等过滤器。 (键可以是颜色,值可以是布尔真值。)

      【讨论】:

        猜你喜欢
        • 2022-12-11
        • 2019-02-11
        • 2023-02-21
        • 2016-01-23
        • 2012-12-27
        • 1970-01-01
        • 2012-12-04
        • 2014-08-20
        相关资源
        最近更新 更多