firebase Firestore:每个用户有一个子集合还是只有一个顶级集合?[已关闭]

k0pti3hp  于 2023-03-03  发布在  其他
关注(0)|答案(1)|浏览(124)

已关闭。此问题为opinion-based。当前不接受答案。
**想要改进此问题吗?**请更新此问题,以便editing this post可以用事实和引文来回答。

3天前关闭。
Improve this question
我想知道在下面的场景中到底有什么不同。我们有用户创建的Posts,因此除了postContent字段外,还包含userId字段。我现在可以想到两种可能的解决方案:
1.有一个简单的顶层集合Posts,其中每个Post都是一个文档,还有一个单独的顶层集合Users,其中每个用户都由一个文档表示。

1.在每个用户文档下有一个Users顶级集合和一个UserPosts子集合。

两个可能的查询:
1.给予我用户xyd的所有帖子。可以通过请求集合Posts中的所有文档来使用解决方案1,其中userId == 'xyd'。也可以通过请求“获取ID为”xyd“的user-doc子集合下的所有文档”来使用解决方案2
1.给予我所有包含“Cats”的帖子。这两种解决方案不都应该是可行的吗?解决方案1是一个基本查询,解决方案2只需要在字段where postContent〉= 'Cats'上进行groupcollection查询。
我是否忘记了什么?或者这两个解都有效?如果都有效,我刚才描述的哪个场景是正确的?

avwztpqn

avwztpqn1#

There is no "perfect", "the best" or "the correct" solution for structuring a Cloud Firestore database。在NoSQL世界中,我们通常根据要执行的查询来构建数据库。因此,如果您找到的解决方案之一有效,那么您应该继续使用它。
1.是的,这是正确的。两个模式都可以被查询以返回单个用户的帖子。
1.是的,第一种方案只需要简单查询,第二种方案需要collectionGroup查询。
不,这取决于您选择是否使用一种解决方案而不是另一种。

相关问题