如何在MongoDB中建立共同朋友的模型

时间:2013-01-18 08:58:35

标签: node.js mongodb hadoop mapreduce database

我们需要为每个列表显示共同的Facebook好友(类似于airbnb的做法)。我们不需要朋友查询只显示每个列表的相互连接。这在关系数据库中相对简单,但我有点坚持在MongoDB中完成它的最佳方法。在登录用户和列表所有者之间查询共同朋友的最佳方法是什么?我应该在查询列表后单独使用foreach循环查询每个列表,还是可以一次查询列表和共同朋友?

我当前的架构是:

Listing: {
   user_id: object id,
   ...
}

User: {
      _id: object id,
      friends: [{facebook_id: string, name: string}]
      ...
}

1 个答案:

答案 0 :(得分:1)

据我所知,在关系世界中你需要一个简单的内连接,对吗?你做一个用户的朋友到另一个用户的内部联接,并获得共同的朋友。这可能看起来简单,容易,但在幕后,这是一个昂贵的操作,并没有比在Mongo中运行自定义Map / Reduce并获得相同数据更好。 内部操作将是相同的:只需与id列表相交。 由于我目前对Map / Reduce不太满意,我不会发布示例。我个人而言,只会将两个用户的朋友加载到内存中并在那里相交。这应该不会更糟,然后在RDBMS中进行内部联接。