2016-07-20 36 views
4

舉一個故事的例子:在我的案例中,故事是由許多句子組成的,故事永遠不會超過20個句子。 這是更好地使一個故事和模式的另外一個用於句,最後使故事,其構成的故事句子的引用:在MongoDB中,分離Schema還是將它們放在一起會更好?

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 ... 

}); 

或者是更好地把句子直接在故事:

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 ... 

}); 

對於爲了讓整個故事,因爲我們必須讓20加入...不那麼有效...... 第一種情況,但第2殼體20句(最大)的故事喜歡更多的可擴展性,例如,如果我想顯示一些隨機語句,或更新語句...

就我而言,我認爲句子不會被其他故事重複使用,故事一句一句地寫。我的意思是當一個句子被寫入時,它會立即保存在MongoDB中。

在此先感謝您的任何建議。

回答

2

單句是否會有很大意義?你能不止一次地重複使用一個句子?我認爲,如果沒有這個故事的背景,一個句子就不太可能有意義,而且你不希望重複使用一個句子。

故故事文檔應該由句子子文檔組成。即您將擁有一個集合(故事),每個故事文檔將包含一系列句子子文檔。這將是您展示的第二個架構。

+0

這是有道理的。謝謝:-)像@ profesor79說檢索會更有效率。 – Zagonine

-1

句子的故事,因爲最高僅爲20 MongoDB是「joinless」,它必須被用作「joinless」

必須使用多個集合爲一對多的關係,只要「多」是很大

2

只要故事的大小將適合bson文檔的限制,嵌入到主文檔。

這將加快檢索過程,並且還將啓用文檔級別的ACID更新。

相關問題