2011-01-03 6 views
2

MongoDBのスキーマに関する質問にぶつかりました。 MongoDB Schema Designの例を参照して、db.studentsとdb.coursesについて説明します。MongoDBスキーマデザイン - 新しいコレクションまたはリファレンス?

私はSQLの構造化にもっと慣れているので、私はまだこのリファレンスや埋め込みの問題と混同しています。したがって、この例ではdb.students内のコースのみが表示され、db.coursesを参照しています。だからhumanitieslanguagesなどのコースを分類するとどうすればいいですか?

これを行うにはどうすればよいでしょうか?

    1. db.categoriesという名前のコレクションを作成し、db.coursesを参照しますか?
// db.courses 
{ name: Biology, cat: 1 } 
{ name: English, cat: 2 } 

// db.categories 
{ cat: 1, name: Humanities } 
{ cat: 2, name: Languages } 
    2.ちょうどコースの中に埋め込みますか?
// db.courses 
{ name: Biology, cat: Humanities } 
{ name: English, cat: Languages } 
{ name: History, cat: Humanities } 

私は何をしているのですか?

ありがとうございます。

答えて

3

紹介:カテゴリはちょうどあなたがコースを表示するために、負荷カテゴリを必要としない列挙型ので、あなたのケースでは、両方の変異体が良いだろう

、あなただけのいくつか列挙を作成して、idでカテゴリ名を取得する必要があります。

たとえば、テーブルdb.usersがあり、各ユーザーがdb.coursesのコレクションを持っている場合は、必要なネストされたコレクションコースを個別に作成する必要はありません。 SQLでは、1対多の参照で別の表を作成する必要があるため、本当にクールです。

文書データベースの大きな利点の1つは、ネストされたコレクションで大きな文書を作成でき、テーブルを結合する必要がないことです。

回答:

  1. カテゴリの列挙を作成し、idでカテゴリ名を取得します(ただし、モンゴからロードされない):

    だからあなたの場合、私は、2つの方法を提案します。

  2. カテゴリ名が変更された場合は、各カテゴリを新しいカテゴリ名で更新する必要があるため、最初は大文字と小文字を入れてください。
関連する問題