相互依赖的MongoDB
Posted
技术标签:
【中文标题】相互依赖的MongoDB【英文标题】:Mutual dependency MongoDB 【发布时间】:2014-10-26 18:54:11 【问题描述】:假设我正在使用 MongoDB 数据库制作一个社交应用程序,并且我希望用户能够彼此成为朋友。当然,友谊是一种相互关系,用户 ID 是整数。最好的方法是什么?
每个用户都有一个好友 ID 列表。每次创建/切断绑定时,都必须更新两个用户的列表。
创建包含 2 个用户 ID 的联接表“friendship”。每次创建债券时,我都必须创建两个条目。 1->2 和 2->1
没有。 2,但始终只使用规则创建 1 个键:lower_usr_id -> Higher_usr_id。假设有很多人和朋友。不会节省很多空间和时间吗?
【问题讨论】:
寻求“最佳”方法就是征求意见。有多种方法可以解决这个问题。另外:您在询问 MongoDB,但在谈论连接表(一个关系数据库概念)。所以这个不清楚。如果这与 任何 数据库技术有关,那么解决方案将会很多。 连接表是指仅包含两个用户 ID 的对象集合,所以是的,它可以像在关系数据库中一样工作。关于“最佳”方法:我认为某些解决方案的性能可能比其他解决方案更好。 【参考方案1】:听起来您不太清楚 MongoDB 的工作原理。连接不是出现在 MongoDB 中的东西,如果您尝试像使用关系数据库一样使用 MongoDB,那么您做错了。
我不是 MongoDB 方面的专家,但我相信有两种常见的建模一对多关系的方法:
-
将一个文档嵌入到另一个文档中
使用参考文献
将一个文档嵌入另一个文档是有意义的,因为父文档在某种意义上“拥有”子文档。例如,在博客应用程序的上下文中,评论归帖子所有,因此将评论嵌入帖子中可能是有意义的。
对于您的用例,我认为这不合适,因为关系是在同一类型的对象之间。因此,将友谊记录为对同一集合中另一个对象的引用是有意义的。
查看this link了解更多详情。
【讨论】:
以上是关于相互依赖的MongoDB的主要内容,如果未能解决你的问题,请参考以下文章