如何查询Cloud Firestore以匹配所有值但以任何顺序匹配的数组?

时间:2020-08-16 04:45:28

标签: google-cloud-firestore

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

颜色: [蓝色,红色,绿色]

我想查询以查找与我的输入相匹配的文档,颜色:[红色,绿色,蓝色]。但是它不应返回包含更多内容的文档,即[蓝色,红色,绿色,黄色]。它必须精确匹配,但我不一定知道数组中各项的顺序。这有可能吗?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

使用现有数据进行单个查询就无法实现您的要求。您要么必须:

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