【发布时间】:2016-11-23 19:13:21
【问题描述】:
以故事为例:一个故事由许多句子组成,在我的情况下,故事永远不会超过 20 个句子。 最好为一个故事制作一个架构,为句子制作另一个架构,最后在 Story 中引用构成故事的句子:
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 个句子的故事(最大),为了获得整个故事,对于第一个案例,我们必须进行 20 次连接......效率不高...... 但第二种情况更喜欢可扩展性,例如如果我只想显示一些随机句子,或者更新一个句子......
就我而言,我不认为句子会被其他故事重用,而且故事是逐句写的。我的意思是当一个句子被写入时,它会立即保存在 MongoDB 中。
提前感谢您的任何建议。
【问题讨论】:
标签: mongodb mongoose database-schema