MongoDB - 将文档存入其他文档并使用Nodejs进行更新

时间:2014-01-09 21:18:39

标签: node.js mongodb

我计划将MongoDB NoSQL数据库用于视频游戏,但我想知道一些我不太清楚的事情,到目前为止我还没有找到答案。

我知道可以将文档实例(例如汽车)存储到另一个文档实例(用户)中,但是它是如何工作的?因为如果它是按价值复制,如果我更新我的车,用户将有一辆不是最新的汽车!所以我想这是一个参考副本。或者它可能不是副本,而是直接某种奇怪的链接,例如我们以前使用带有ID字段的SGBD数据库。

但是,另一件事,如果我更新我的模式(我肯定会),以前存在的新字段或OLD字段将不会在现有数据中更新...看起来这是一个已知的问题并且有一些解决方案,你有什么好的链接解释如何处理?我只是想在这里,我的DB没有写,我想对设计做出最好的选择。我之前从未使用NoSQL的东西而且我正在尝试设计它但是我仍然有很多来自SGBD DB的误解和“坏”的实践。

顺便说一句,MongoDb是一个安全漏洞(默认情况下没有密码等),你有链接用mongoDb保护数据库吗?感谢。

1 个答案:

答案 0 :(得分:2)

我自己只是在学习Mongo,但我希望能提供一些帮助。注意Mongo的概念是schema-less数据库,这意味着一个用户可能有车,另一个没有车,而其他人有不同的车。因此,如果要更新汽车定义,则需要相应地修改现有用户文档。汽车没有中心定义 - 即与RDBMS中的中央车厢没有任何关系。

您可以使用Mongoose Schemas向Mongo添加一些结构。这为模式的更改提供了一些灵活性,例如,您可以添加新属性并应用默认值,这意味着您无需更新现有文档。即:

之前

var Book = new Mongoose.Schema({
  title: {type: String}
});

var Book = new Mongoose.Schema({
  title: String
  category: {type: String, default: 'fiction'}
});