2014-10-26 157 views
0

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

  1. 每个用户都有一个好友ID列表。每次创建/切断债券时,两个用户的名单都必须更新。

  2. 创建包含2个用户ID的连接表'friendship'。每次创建债券时,我都必须创建两个条目。 1-> 2和2-> 1

  3. 由于没有。 2,但始终只使用rule:lower_usr_id - > higher_usr_id创建一个绑定。假设有很多人和友谊。它不会节省很多时间和空间吗?

+0

要求“最好”的方法是征求意见。有多种方法可以解决这个问题。另外:你在问关于MongoDB的问题,但是谈论了连接表(关系数据库的概念)。所以这个不清楚。如果这涉及* any *数据库技术,那么解决方案将会很多。 – 2014-10-26 18:56:40

+0

通过连接表,我只是指仅包含两个用户ID的对象集合,所以是的,它将像关系数据库一样工作。 关于'最好'的方法:我认为一些解决方案可能比其他解决方案表现得更好。 – Zibi 2014-10-26 19:02:47

回答

1

这听起来像你对MongoDB的工作方式还不太清楚。联接不是在MongoDB中出现的,如果你想像关系数据库那样使用MongoDB,那么你做错了。

我对MongoDB的专家,但我相信有模拟一个一对多的关系的两种常用方法:

  1. 里面嵌入另一个
  2. 使用引用一个文件

将文档嵌入另一个文档是有意义的,其中父文档在某种意义上“拥有”该子文档。例如,在博客应用程序的上下文中,评论属于帖子,所以将帖子嵌入帖子中可能有意义。

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

查看this link了解更多详情。