2

我有一个:

  • MongoDB数据库
  • NodeJS 上的 REST API
  • Angular JS 前端

现在我想创建数据库 schma。这将是:

故事- 用户插入带有描述的故事。

问题- 与故事的关系。一个故事可以有100多个问题。

答案- 与问题的关系。一个问题只能有一个答案。

我应该在 MongoDb 中选择什么类型的关系?我需要更快的灵魂。例如:

{
 title: "Story title",
 descr: "Story descr",
 questions: [
              {body: "Question body", user: "User}
            ]
}
4

1 回答 1

2

由于每个故事的问题数量可能很大,并且假设在显示故事时不需要显示所有问题(特别是在显示故事列表时),并且因为一个文档有很多作者会带来许多复杂性,我建议使用以下简单模式:

stories {
  _id
  title
  description
}

questions {
  _id
  storyId
  user
  body
  answer { ... }
}

找到一个故事的所有问题很简单(storyId应该有一个索引),找到给定问题的故事是微不足道的。我认为answer可以嵌入。不过,请注意并发写入,即当有人编辑问题而其他人编写答案时。这在使用单个嵌入式文档时比使用数组容易得多,并且并发写入者的数量最多可能是两个,而不是数百个。

唯一稍微棘手的操作是删除故事,这需要您手动删除问题,但这实际上只是一个电话。

于 2013-10-26T11:36:29.297 回答