FiRestore数组包含对元素列表的查询 [英] Firestore array contains query for list of elements
本文介绍了FiRestore数组包含对元素列表的查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个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
LIKE操作。而且您不能通过组合多个array-contains
检查来创建它,因为一个查询中只能有其中一个检查。您可能需要file a feature request。
今天的最佳选择是:
- 从数组中选择一个值,然后使用该值执行
array-contains
查询。然后在应用程序代码中执行附加筛选。 - 使用映射存储值,然后使用多个
where value == true
条件,如此问题的答案所示:Firestore: Multiple 'array-contains'
这篇关于FiRestore数组包含对元素列表的查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文