素晴らしい質問です。まず、N:Nの関係がどのように機能するかについて少し概説し、次に各箇条書きについて詳しく説明します。
N:N MySQLでは通常、ユーザーとインタレストを関連付けるピボットテーブル(user_interestsテーブル)があります。 mongoでは、これを少し異なる方法で行います。まだユーザーとインタレストコレクションがありますが、代わりに、ユーザーのインタレストの下にキーのリストを保存します。だからこのようなもの:
User Collection {
"name":"Josh",
"user":"jsmith",
"interests":[
{
"_id":12345,
"rating":"like"
},
{..}..
]
}
インタレストテーブルにキーオフされているリストにインタレストを保存することにより、必要な各アクションを実行できます。インタレストテーブルにあるIDに基づいてクエリを実行する場合は、$in修飾子 。
今、あなたの興味のコレクションのために、私は次のことをします:
User Interest {
"_id":objectId
"label":"Swimming",
"count":intValue
}
ユーザードキュメントにインタレストを追加する場合、カウント変数は評価の定義に依存します。評価を別の領域(またはロジック)に保存している場合、それらに割り当てた値は、対象のint値に関連する値になります。 IE:ユーザーがそれを評価し(値は1)、カウント値に1を追加します。
うまくいけば、これが役に立ち、少なくともそれを構築する方法について他のいくつかのアイデアをもたらしました!
幸運を祈ります。MONGOは素晴らしいことを忘れないでください。