MongoDB:親オブジェクト内の加入者の配列を格納する
質問
現在、次のように格納されているチャンネルコレクションを持っています。
{ "_id" : ObjectId("4f5d1012d48147e840000000"), "title" : "Testing", "description" : "hello!", "created" : "2012-03-11 20:50:26", "user" : ObjectId("4f5d0408d48147207f000000") }
.
しかし、私は今このチャンネルを購読できるようになりました。私はそれを次のように保存したいので、それを自分のコレクションと見なすのに十分なことを考えることはありません:
{
"_id" : ObjectId("4f5d1012d48147e840000000"),
"title" : "Testing",
"description" : "hello!",
"subscriptions" :
{ "user" : ObjectId("USERIDHERE"), "created" : DATETIME },
{ "user" : ObjectId("USERIDHERE"), "created" : DATETIME },
{ "user" : ObjectId("USERIDHERE"), "created" : DATETIME }
"created" : "2012-03-11 20:50:26",
"user" : ObjectId("4f5d0408d48147207f000000")
}
.
私は私のリチウムオブジェクト内でこれをきれいに実装する方法を中心に私の頭をつかむことはできません。My $story->vote
プロパティは、すべての更新プログラムをプッシュするアレイになりますか?
解決
imho、どのようにしてあなたが購読の使いやすい方法に依存する構造。
これがパフォーマンスがあるため、埋め込みMongoオブジェクトとリンクされたコレクションを持つ線を短くするためです。 http://www.monfodb.org/display/docs/schema + design
ユーザIDを購読で置く代わりに、チャネルIDとユーザとのリンクを提案し(チャネルIDとして埋め込まれたユーザの組み込みコレクションとして)。
使用法は、ユーザーのコレクションを(コントロールパネルまたはダッシュボードまたはフロントページなどの場合は...)を引っ張ったときに、表示するチャンネルのリストがあります。
チャネル内のユーザーIDの埋め込みチャンネルの表示を計画し、それらを購読するすべてのユーザーを表示する場合にのみ意味があります。
集約をすることを計画している場合、または1つのコレクションが購読することを計画している場合は、それらを意味します。
所属していません StackOverflow