首页 > 解决方案 > 如何在 Cloud Firestore 中使用文档 ID 执行集合组查询

问题描述

所以几天前,我将我的应用程序帖子从实时数据库移到了 Cloud Firestore,因为 Firestore 显然具有更灵活的查询。我一直在修改我的代码以使用 firestore 作为新数据库。现在我遇到了一个问题。如何检索“帖子”集合中的每个文档,这些文档具有包含特定命名文档的“喜欢”集合?我不知道这是否有意义,所以这里有一张展示问题的图片:

在此处输入图像描述

我对 firebase 实时数据库有一个有效的查询,但不知道如何使用 firestore 进行查询。有可能还是我必须更改数据库的结构?如果我必须改变结构,获得相同结果的最方便的方法是什么?

标签: androidfirebasegoogle-cloud-firestore

解决方案


目前这对于集合组查询是不可能的。您可能很想在查询上放置一个过滤器FieldPath.documentId() == 'your-doucment-id',但这不被支持。 FieldPath.documentId()实际上是一个token,指的是完全唯一的文档id,它包含了文档的整个路径。

解决方法是将文档 ID 作为字段存储在文档中,然后过滤该字段的内容。因此,如果文档有一个id使用文档 ID 调用的字段,您可以查询collectionGroup("Likes").whereEquals('id', 'your-document-id').


推荐阅读