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 に答える