1

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

我拥有的当前架构是:

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

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

1 回答 1

1

据我了解这个问题,在关系世界中你需要一个简单的内部连接,对吧?您将一个用户的朋友与另一个用户进行内部连接,并获得共同的朋友。这看起来很简单,也很容易,但实际上,这是一项代价高昂的操作,它并不比在 Mongo 中运行自定义 Map/Reduce 并获得相同的数据更好。内部操作将是相同的:只需与 id 列表相交。由于我目前对 Map/Reduce 不是很好,所以我不会发布示例。我个人只会将两个用户的朋友加载到内存中并在那里相交。这应该不会差很多,然后在 RDBMS 中进行内部联接。

于 2013-01-18T11:47:42.417 回答