带有来自父文档的子集合引用的 Firestore 查询

Firestore query with subcollection reference from parent document

我的 Firestore 数据库结构如下所示(如图所示)

我有一个用户集合,其中有一个帖子子集合。

我想按国家(父集合字段)获取(查询)所有帖子。 已编辑:我还有其他字段和国家字段,所以我不想在帖子子集合中复制字段。

有没有不重复字段的解决方案

我的代码如下:

 val query: Query =
            postsRef
                .whereEqualTo("country", "USA"). // field from parent document
                .orderBy("createdAt", Query.Direction.DESCENDING)
                .limit(20)

您必须首先查询该国家/地区的用户,然后获取他们的 post 或将国家/地区存储在 post 文档中,正如您在问题中提到的那样。

复制单个字段“国家/地区”应该按照亚历克斯在他的回答中提到的那样进行。 如果您需要根据用户文档中的多个字段进行查询,那么第一种方法也可以使用

无法根据父文档中存在的字段过滤 sub-collection 中的文档。您拥有的最佳选择是在每个 post 中添加国家字段并使用 collection group query ,如下所示:

val query = db.collectionGroup("posts")
                .whereEqualTo("country", "USA")
                .orderBy("createdAt", Query.Direction.DESCENDING)
                .limit(20)

这样,您将只能从美国获得 post。但是如果你需要在某个路径下查询Firestore中的集合,请查看以下文章:

P.S。也请不要忘记创建一个 .