MongoDb数据关系

时间:2013-10-26 10:30:05

标签: node.js mongodb nosql

我有一个:

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

现在我想创建Database schma。它将是:

故事 - 用户插入包含说明的故事。

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

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

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

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

1 个答案:

答案 0 :(得分:2)

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

stories {
  _id
  title
  description
}

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

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

唯一稍微棘手的操作是删除一个故事,要求你手动删除问题,但这只是一个电话。