我有一个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');
答案 0 :(得分:0)
Firestore现在可以检查数组字段上的这些条件:
array-contains
的特定值。array-contains-any
的(最多10个)值列表。您要描述的是类似array-contains-all
的操作,目前尚不存在。而且,您无法通过组合多个array-contains
检查来创建它,因为查询中只能包含其中一项。您可能需要file a feature request。
今天最好的选择是:
array-contains
查询。然后,您可以在应用程序代码中进行其他过滤。where value == true
条件,如对此问题的回答所示:Firestore: Multiple 'array-contains'