2012-01-14 21 views
0

私のデータベースには、各文書が複数のセクション があり、各セクションがMongoDBのドキュメント構造

ユーザーは、非常に多くの場合、作品の収集と連携(、更新作業を新しい作品を追加し、複数の作品を持っているユーザーの収集、 各ユーザーが複数の文書を持っている、 を持っています削除作業)。だから私の質問は、どのようなコレクションの構造を作るべきなのでしょうか?作品集はセクションごとに100〜200件です。

ユーザー_idを持つすべてのユーザーに対して作業コレクションを作成する必要がありますか、それとも最善の解決策がありますか?

答えて

2

どのような種類のクエリがあるかによって異なります。ガイドラインは、理想的には1つのクエリで必要なものすべてを取得できるように文書を整理することです。

一方、避けたいのは、インプレースアップデートに十分な領域がないため、mongoにドキュメントを再割り当てさせることです。あらかじめ十分なスペースをあらかじめ割り当てたり、頻繁に変化する部分を独自のコレクションに抽出したりすることで、これを行うことができます。

+0

あなたはそれを達成することができますが、いくつかの異なる文書構造がありますが、そのうちのいくつかはあなたのユースケースに合っています。それは私が言っていることです。 – milan

+0

私は十分な詳細がないので難しいです。あなたはこのように始まり、何かがうまくいかないことを発見すると進化することができます。まずは別のコレクションにセクションを抽出しています。 – milan

+0

ユーザーアカウントの詳細を取得するとき、通常は常に彼のすべてのセクションと作品を見たいですか?ちょうどログインプロセスを取得するには?おそらくない。それが一つの理由です。もちろん、すべてのセクションではなく、いくつかのフィールドを取得するだけです。ドメイン単位でも意味があります。セクションについては、ユーザーが作業する「ドキュメント」として話します。 – milan

0

あなたは選ばれるべきであるの埋め込み、エンティティ間の関係「が含まれている」ため、一般的に、MongoDBのドキュメントに

を読むことができたよう。リンクを使用しない場合、リンクを使用するとデータが重複します。

各ユーザーが自分のドキュメントにアクセスできる場合は、あなたはいいと思います。ちょっと注意しておきたいのは、たくさんのものを埋め込んでいるので、文書のサイズには限界があります(16MBと思う)。

+0

ユーザーが自分のドキュメントにしかアクセスできない場合でも、ドキュメントにユーザーを埋め込むことはお勧めできません。それ以外には、概念的に別のエンティティです。 – Russell

関連する問題