当前位置: 首页 > 知识库问答 >
问题:

Firestore查询多个父文档的所有子集合

仉伟兆
2023-03-14

我在Cloud Firestore中有以下简化的数据模式:

[Users Collection]
-> "UserID1" { "displayName": "Luke", "profileImage": "someURL" }
-> "UserID2" { "displayName": "Han", "profileImage": "someURL" }

[Teams Collection]
-> "TeamId1" { "name": "Some Team Name", "members": ["UserId1", "UserId2"] } 
--> [Todos Collection]

我现在想向用户展示他团队的所有“待办事项”文档,我不知道什么是最好的方法。

1. 集合组查询 - 按团队 ID 查询

为此需要两个查询。每个待办事项文档都可以具有父团队 ID,并通过集合组查询进行检索,例如 -

到目前为止,这对我来说似乎是最好的解决方案,但缺点是“IN”查询限制为10个值 https://firebase.googleblog.com/2019/11/cloud-firestore-now-supports-in-queries.html

2.集合组查询-按user-id查询

在这里,每个todo文档都将从团队文档中获取用户数组。查询很简单:-

但是您必须在用户离开团队后维护数组,例如或当新团队成员加入时。3.非规范化数据-每个用户都获得待办事项的子集合

好吧,这有点过头了:)维护工作量甚至高于2。

对于我的问题,是否有其他数据建模方法或某种最佳实践?

共有1个答案

乐正辰阳
2023-03-14

没有数据的最佳实践。您需要知道,构建Cloud FiRecovery数据库没有“完美”、“最佳”或“正确”的解决方案。但是,我们通常会根据我们要执行的查询构建Firest数据库。

因此,如果其中一个查询完成了工作,那么您可以继续进行。如果第一个有一些限制,那么使用第二个。

 类似资料:
  • 为了查询子集合和父文档,我对firest的文档及其最佳实践有一些问题。我试图使用Typecript在我的Firebase函数中进行查询。 DB: ├── 用户(集合) │ └── 用户(ID为的文档) │ │ └── 计划(子集合) 我有一个数组中的用户ID列表,我需要从用户文档和当前文档的子集合计划中收集信息。 但是如何从用户文档和子集合(计划)文档(当前)中获取数据,我不知道在场景中最有效的查

  • 我正在使用Firebase Firestore作为BaaS构建一个应用程序。 但当我尝试在我的应用程序上创建提要/实现全文搜索时,我面临一个问题。 我希望能够搜索所有用户的帖子,问题是,用户帖子在Firestore数据库中的结构如下: 帖子(收藏)- 我想遍历每个用户的用户帖子子集合并获取提要的所有数据,并使用Algolia或ES等全文搜索应用程序来实现它。 > 我可以遍历特定的用户ID(代码如下

  • 在Firestore中,我有一个用户集合,在每个用户文档中存储一个名为favorites的集合,该集合包含标记为favorites(存储)的文档的ID 我可以采取另一种方法来获取两个集合并手动过滤它们,但我使用的是Firebase RecycerView适配器,它显示的所有数据都基于查询,这将使事情更加高效。 这样的结果是如何实现的呢?如果需要进一步的解释,请告诉我

  • 我有文档,其中包含子集合。现在,我想获取子集合中至少有一项的所有项目。这可能吗? 类似于: < code>getDocs(collection(getDB()," Projects)),其中(" Items.size ","

  • 当使用Firebase控制台时,可以看到所有文档和集合,甚至是路径中包含不存在的“文档”的子集合。 有没有可能,以某种方式,列出这些文件。既然控制台能做到,看来肯定有办法。如果有可能找到这些文档,是否可以创建一个查询来获取所有不存在但仅限于具有嵌套子集合的文档?(因为所有不存在的文档集将是无限的)

  • 据我所知,我可以使用云函数以某种方式实现这一点?我试着阅读云函数,但我很迷路。是否有一种方法可以触发云函数,在用户更新帖子时删除子集合中的所有文档?