FiRestore数组包含对元素列表的查询 [英] Firestore array contains query for list of elements

查看:13
本文介绍了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-allLIKE操作。而且您不能通过组合多个array-contains检查来创建它,因为一个查询中只能有其中一个检查。您可能需要file a feature request

今天的最佳选择是:

  1. 从数组中选择一个值,然后使用该值执行array-contains查询。然后在应用程序代码中执行附加筛选。
  2. 使用映射存储值,然后使用多个where value == true条件,如此问题的答案所示:Firestore: Multiple 'array-contains'

这篇关于FiRestore数组包含对元素列表的查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆