带有来自父文档的子集合引用的 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。也请不要忘记创建一个 .
我的 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。也请不要忘记创建一个