gpt4 book ai didi

firebase - Firestore 数组包含对元素列表的查询

转载 作者:行者123 更新时间:2023-12-01 21:52:11 25 4
gpt4 key购买 nike

我有一个包含如下数组的 Firestore 文档:

Array:                    Array:
[1, 2, 3, 4, 5, 6, 7] or ['Zhangir', 'Erasyl', 'Arman']

而且我需要检查此文档是否包含任何给定的数组。例如:

[1, 2, 3, 4] or [1, 2, 7] or ['Zhangir', 'Arman'] and so on

只有在完全匹配时才返回它。但是考虑到我的数组可能有 100 个元素长,每次都说 arraycontains [1], arraycontains[2]... 会很不方便。有没有办法对很多值进行复合查询?我找到的所有信息都说我不能,但也许有办法。

在我的例子中是

Firestore.instance.collection("Querys")
.where('array', arrayContains: [1, 2, 3, 4, 5]);

Firestore.instance.collection('Querys')
.where('array', arrayContains: ['Zhangir', 'Arman']);

而不是像

Firestore.instance.collection('Querys')
.where('array', arrayContains: 'Zhangir')
.where('array', arrayContains: 'Arman');

最佳答案

Firestore 现在可以检查数组字段的这些条件:

  • 该字段是否包含具有array-contains的特定值。
  • 该字段是否包含具有 array-contains-any 的值列表(最多 10 个)中的任何一个。

您所描述的是一个类似array-contains-all 的操作,目前还不存在。而且您不能通过组合多个 array-contains 检查来创建它,因为您只能在查询中使用其中一个。你可能想要 file a feature request

今天最好的选择是:

  1. 从数组中选取一个值,并使用该值执行array-contains 查询。然后在您的应用程序代码中进行额外的过滤。
  2. 使用一个映射来存储值,然后使用多个where value == true 条件,如这个问题的答案所示:Firestore: Multiple 'array-contains'

关于firebase - Firestore 数组包含对元素列表的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59135592/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com