node.js - MongoDb 数据关系

标签 node.js mongodb nosql

我有一个:

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

现在我想创建数据库架构。它将是:

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

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

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

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

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

最佳答案

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

stories {
  _id
  title
  description
}

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

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

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

关于node.js - MongoDb 数据关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19605614/

相关文章:

linux - 当我在 ubuntu 的 mongo 终端中运行 show dbs 时命令不运行

database - 使用复合索引通过查询参数的多个组合进行查询的最佳方法?

node.js - 如果相同目录中存在同名文件,则省略 “.cmd”时,调用运算符(operator)(&)在新窗口中运行命令

java - MongoDB 和 Apache Mahout 连接错误

node.js - Webpack 突然无法编译,因为 "Module not found: Error: Can' tsolve"错误

mongodb - MongoDB whole/data/db在一次电击导致crash后没了正常吗

mongodb - 在 NoSQL (MongoDB) 中存储/同步 Facebook Graph

nosql - 在 Cassandra 中存储订购的商品

node.js - 在快速流读取流中平衡慢速 I/O

javascript - 理解 node.js 中用于递归函数的 promise