【发布时间】:2020-10-29 12:24:44
【问题描述】:
我想出了多种解决方案,但似乎没有一个是“面向未来的”。
让我先迭代一下我的解决方案。
特征的接受标准
- 用户可以喜欢或不喜欢帖子
- 用户可以在他已经喜欢的帖子上看到“充满的心”
假设
有用户收藏和帖子收藏
可能的解决方案
1.放置喜欢该帖子的用户参考数组。
问题
超级简单,但是一旦“帖子”增长太多,所有查询帖子的用户都会受到影响。还将潜在的无限数组放入文档中。
2。将 Post 引用数组放入 User
问题
与上述相同,但只有数据增长的用户可能会受到影响。
3.与引用 User 和 Post 的模式类似,并向 Post 添加计数器
问题
这个文档会增长很快,每天会有很多用户喜欢很多帖子。如何查询用户喜欢的帖子?如果这个集合增长到数百万个类似文档怎么办?
到目前为止我还没有找到正确的答案,一开始我认为#1 是要走的路,然后很快就改变了主意到#3,然后我就想——如果它长得很快并且查询起来很痛苦怎么办每次获取帖子时从数百万个文档中找到“喜欢”?现在我认为#2 是“更安全”的选项,但我可能错了。如果我去#3,我想分开 /likes 和 /posts 端点,所以这是另一个问题。 - 我将如何从帖子列表中查询用户是否喜欢?它应该是单独的单一端点吗?但是每次加载帖子列表时都会调用太多。我很困惑:(
感谢阅读。
【问题讨论】:
标签: mongodb database-design database-schema