【问题标题】:firebase firestore flutter where queryfirebase firestore flutter where 查询
【发布时间】:2021-11-13 00:34:28
【问题描述】:
我想过滤数据列表中存在的嵌套数组项上的 Firestore 列表。
我有一个包含多个文档的集合决策。您可以在图片中看到该文档有团队列表,并且团队列表还有一个团队成员列表,所以我只需要获取那些电子邮件(存在于 team_list 的 team_member_list 字段中)等于我的电子邮件 ID 的文档。
如何使用 where 子句在 Flutter Firebase Firestore 中获取此信息?
FirebaseFirestore.instance.collection('decision').orderBy('close_date')
【问题讨论】:
标签:
firebase
flutter
google-cloud-firestore
【解决方案1】:
Firebase 的array-contains operation 可用于过滤数组字段中存在特定项的文档,但该操作要求您指定数组中的完整项。
没有办法只在数组中的项目中搜索单个值,也无法在子数组中搜索(如在您的文档结构中)。
如果您希望能够根据团队成员的电子邮件选择文档,请将具有这些值的字段添加到文档中,并与 teams_list 字段保持同步。
这样的字段看起来像这样:
team_member_emails: ["snjmediastudio@gmail.com", "vishal@somewhere.com"]
获得该字段后,您可以使用以下方式查询:
FirebaseFirestore.instance.collection('decision')
.where("team_member_emails", "array-contains", "snjmediastudio@gmail.com")