Firestore能否查询字段匹配数组中任一值?代码示例解析
Firestore 匹配数组任一元素的查询方案
当然可以实现你想要的查询需求!你当前的代码里用了isEqualTo: listHearted,这会要求projectName字段的值完全等于整个listHearted数组,而不是匹配数组里的任意一个元素——这应该就是没得到预期结果的问题所在。
正确的实现方式
Firestore 提供了whereIn操作符,专门用来查询字段值存在于指定数组中的文档,正好符合你的需求。只需要把查询条件里的isEqualTo替换成whereIn就可以了:
_fireStore .collection('articles') .orderBy('created') .where('projectName', whereIn: listHearted) .getDocuments() .asStream()
注意事项
whereIn有一个限制:传入的数组最多只能包含10个元素。如果你的listHearted数组长度超过10,需要拆分多次查询,然后在客户端合并结果。- 要确保
projectName字段的类型和数组中元素的类型完全一致(比如都是字符串类型),否则会出现匹配失败的情况。
内容的提问来源于stack exchange,提问作者Shadi Ossaili
相关产品推荐
相关产品推荐

