相互依赖MongoDB

相互依赖MongoDB,mongodb,nosql,Mongodb,Nosql,假设我正在使用MongoDB数据库制作一个社交应用程序,我希望用户能够彼此成为朋友。当然,友谊是一种相互关系,用户ID是整数。最好的方法是什么 每个用户都有一个朋友ID列表。每次创建/断开绑定时,两个用户的列表都必须更新 创建包含2个用户ID的联接表“友谊”。每次创建bond时,我必须创建两个条目。1->2和2->1 作为第二名,但始终只创建一条规则:较低的usr\U id->较高的usr\U id。假设有很多人和朋友。这不是节省了很多空间和时间吗 听起来你对MongoDB的工作原理还不太清楚。

假设我正在使用MongoDB数据库制作一个社交应用程序,我希望用户能够彼此成为朋友。当然,友谊是一种相互关系,用户ID是整数。最好的方法是什么

  • 每个用户都有一个朋友ID列表。每次创建/断开绑定时,两个用户的列表都必须更新

  • 创建包含2个用户ID的联接表“友谊”。每次创建bond时,我必须创建两个条目。1->2和2->1

  • 作为第二名,但始终只创建一条规则:较低的usr\U id->较高的usr\U id。假设有很多人和朋友。这不是节省了很多空间和时间吗


  • 听起来你对MongoDB的工作原理还不太清楚。连接不是出现在MongoDB中的东西,如果您试图像使用关系数据库一样使用MongoDB,那么您就错了

    我不是MongoDB方面的专家,但我相信有两种常见的建模一对多关系的方法:

  • 将一个文档嵌入另一个文档
  • 使用参考资料
  • 如果父文档在某种意义上“拥有”子文档,则将文档嵌入到另一个文档中是有意义的。例如,在博客应用程序的上下文中,评论由帖子拥有,因此将评论嵌入帖子中可能是有意义的

    对于您的用例,我认为这是不合适的,因为关系是在相同类型的对象之间。因此,将友谊记录为对同一集合中另一个对象的引用是有意义的


    查看更多详细信息。

    寻求“最佳”方法就是征求意见。解决这个问题有多种方法。另外:您询问的是MongoDB,但谈论的是联接表(一种关系数据库概念)。所以这还不清楚。如果这与任何数据库技术有关,那么解决方案将是众多的。所谓连接表,我只是指仅包含两个用户ID的对象集合,因此是的,它将与关系数据库中的一样工作。关于“最佳”方法:我认为一些解决方案可能比其他解决方案表现得更好。