2016-07-20 11 views
4

ストーリーの例を挙げる:ストーリーは多くの文章を構成していますが、私の場合、ストーリーは20文を超えることはありません。 ストーリーや文章のための別の1のためのスキーマを作成し、最終的には物語の中で物語を構成する文章への参照を作成する方がよい:MongoDBでは、スキーマを分離するか、それらを一緒に置く方が良いでしょうか?

var SentenceSchema = new mongoose.Schema({ 

    // Some other fields ... 

    sentence: { 
     type: String, 
     validate: validateSentence, 
     trim: true 
    } 

    // Some other fields ... 

});  

var StorySchema = new mongoose.Schema({ 

    // Some other fields ... 

    //Sentences of the Story 
    sentences: [{ 
     type: mongoose.Schema.Types.ObjectId, 
     ref: 'Sentence' 
    }] 

    // Some other fields ... 

}); 

それともそれは物語の中で直接文章を入れた方が良いです:我々は... 20 ...ので、効率的ではない加わり をしなければならない最初のケースしかし、後者の場合のために、全体の物語を得るために20行の文章(最大)、の話については

var StorySchema = new mongoose.Schema({ 

    // Some other fields ... 

    //Sentences of the Story 
    sentences: [{ 

    // Some other fields ... 

    sentence: { 
     type: String, 
     validate: validateSentence, 
     trim: true 
    } 

    // Some other fields ... 

    }] 

    // Some other fields ... 

}); 

私はいくつかのランダムな文章を表示したい場合や文章を更新したい場合など、より拡張性があります。

私の場合、私は文章が他の物語のために再利用されるとは思っていません。物語は文章で文章を書いています。文章が書かれたら、これはすぐにMongoDBに保存されます。

アドバイスを事前にいただきありがとうございます。物語の中で

答えて

2

文章は孤立していますか?文を複数回再利用できますか?私は、文章の文脈がなくても文章が意味をなさないとは思えず、文章の再利用を望むことはほとんどありません。

したがって、ストーリードキュメントは、センテンスサブドキュメントで構成する必要があります。私。あなたは1つのコレクション(ストーリー)を持ち、各ストーリードキュメントはセンテンスサブドキュメントのコレクションを含みます。これはあなたが示した2番目のスキーマです。

+0

意味があります。ありがとう:-)そして、@ profesor79のように、検索はより効率的になると言いました。 – Zagonine

-1

文の最大は20 MongoDBは「joinless」であり、それは

「joinless」として使用する必要がありますので、「多くの人が」非常にある時はいつでもあなたは、多くの関係にいずれかの複数のコレクションを使用する必要があります。大きい

2

imho物語のサイズがbsonの文書の限界に収まる限り、それらを主文書に埋め込む。

これにより、検索処理が高速化され、ドキュメントレベルでのACID更新が有効になります。

関連する問題