以一个故事为例:一个故事是由许多句子组成的,在我看来,这个故事永远不会超过20个句子。
最好为一个故事和另一个句子制作一个图式,最后在故事中引用组成故事的句子:

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中。
提前谢谢你的建议。

最佳答案

单独一句话有意义吗?你能重复一句话吗?我认为如果没有故事的背景,一个句子不太可能有意义,你也不太可能希望重用一个句子。
因此故事文档应该由句子子文档组成。即,您将拥有一个集合(故事),每个故事文档将包含一个句子子文档集合。这将是您显示的第二个模式。

10-06 08:08