我们需要为每个列表显示共同的Facebook好友(类似于airbnb的做法)。我们不需要朋友查询只显示每个列表的相互连接。这在关系数据库中相对简单,但我有点坚持在MongoDB中完成它的最佳方法。在登录用户和列表所有者之间查询共同朋友的最佳方法是什么?我应该在查询列表后单独使用foreach循环查询每个列表,还是可以一次查询列表和共同朋友?
我当前的架构是:
Listing: {
user_id: object id,
...
}
User: {
_id: object id,
friends: [{facebook_id: string, name: string}]
...
}
答案 0 :(得分:1)
据我所知,在关系世界中你需要一个简单的内连接,对吗?你做一个用户的朋友到另一个用户的内部联接,并获得共同的朋友。这可能看起来简单,容易,但在幕后,这是一个昂贵的操作,并没有比在Mongo中运行自定义Map / Reduce并获得相同数据更好。 内部操作将是相同的:只需与id列表相交。 由于我目前对Map / Reduce不太满意,我不会发布示例。我个人而言,只会将两个用户的朋友加载到内存中并在那里相交。这应该不会更糟,然后在RDBMS中进行内部联接。