已关闭。此问题为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查询。
我是否忘记了什么?或者这两个解都有效?如果都有效,我刚才描述的哪个场景是正确的?
1条答案
按热度按时间avwztpqn1#
There is no "perfect", "the best" or "the correct" solution for structuring a Cloud Firestore database。在NoSQL世界中,我们通常根据要执行的查询来构建数据库。因此,如果您找到的解决方案之一有效,那么您应该继续使用它。
1.是的,这是正确的。两个模式都可以被查询以返回单个用户的帖子。
1.是的,第一种方案只需要简单查询,第二种方案需要collectionGroup查询。
不,这取决于您选择是否使用一种解决方案而不是另一种。