相互依赖的MongoDB

时间:2014-10-26 18:54:12

标签: mongodb nosql

让我们说我正在使用MongoDB数据库制作社交应用,我希望用户能够互相交流。当然,友谊是一种相互关系,用户ID是整数。什么是最好的方法?

  1. 每个用户都有朋友ID列表。每次创建/切断债券时,两个用户都会被删除。列表必须更新。

  2. 创建联接表'友谊'包含2个用户的ID。每次创建bond时我都要创建两个条目。 1-> 2和2-> 1

  3. 没有。 2,但总是只用规则创建1个债券:lower_usr_id - > higher_usr_id。假设有很多人和友谊。它不会节省大量的空间和时间吗?

1 个答案:

答案 0 :(得分:1)

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

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

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

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

    查看this link了解更多详情。