首页 > 解决方案 > 如何根据 Firestore 中子集合中的值过滤根集合?

问题描述

我在 Swift iOS 中使用 Cloud Firestore 数据库,我想根据每个文档的子集合中可用的值过滤根集合列表?

根集合--> 帖子--> 文档--> 子集合--> 文档--> 字段值

“fieldvalue”的值必须决定根集合帖子中的文档列表

我在下面尝试了这个,但它没有按要求工作。

let postsRef = Firestore.firestore()
    .collection("posts")
    .document()
    .collection("comments")
    .whereField("comment_author_id", isEqualTo: Auth.auth().currentUser!.uid)
    .whereField("l1", isEqualTo: true)
    .limit(to: 50)

请协助

在此处输入图像描述

在此处输入图像描述

标签: iosswiftfirebasegoogle-cloud-firestore

解决方案


您的查询未按要求工作,因为调用时:

.document()

紧接着:

.collection("posts")

在不传递任何参数的情况下,Firestore 并不真正知道您要引用哪个文档。如果要获取2czkDrrg4gHgXbCID69u文档中的所有评论,则应将该 id 传递给document()函数,如下所示:

.collection("posts").document("2czkDrrg4gHgXbCID69u")

请记住,Firestore 查询很浅,只能从运行查询的集合中获取评论。单个查询只能使用单个集合中文档的属性。

如果您想获取集合中存在的所有文档中的所有评论posts,那么您应该使用Firestore 集合组查询。请注意,所有子集合必须具有相同的(评论)名称。


推荐阅读