Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js MongoDB-将文档转换为其他文档并使用Nodejs更新_Node.js_Mongodb - Fatal编程技术网

Node.js MongoDB-将文档转换为其他文档并使用Nodejs更新

Node.js MongoDB-将文档转换为其他文档并使用Nodejs更新,node.js,mongodb,Node.js,Mongodb,我计划将MongoDB NoSQL数据库用于视频游戏,但我想知道一些我不太清楚的事情,到目前为止我还没有找到答案 我知道可以将一个文档实例(例如汽车)存储到另一个文档实例(用户)中,但这是如何工作的?因为如果它是按值复制的,如果我更新我的车,用户将拥有一辆不是最新的车!所以我想这是一个参考副本。或者,它可能不是一个副本,而是直接的某种奇怪的链接,就像我们以前使用带有ID字段的SGBD数据库所做的那样 但是,另一件事,如果我更新我的模式(我肯定会),新字段或以前存在的旧字段将不会在现有数据中更新。

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

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

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


顺便问一下,MongoDb是一个安全漏洞(默认情况下没有密码,等等),您是否有使用MongoDb保护数据库的链接?谢谢。

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

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

以前

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


例如,但没有真正解释该怎么做。(除了更改端口和添加密码)高级视频:手册中有一个非常详细的部分,包括和。我实际上从几个月前开始使用mongo,但只有一个表,所以我知道一些关于它的事情,但几个月前我想知道“中心定义”,因为我无法在没有中心定义的情况下对数据库进行imaigne,但当时它并不重要,我做了一些不同的工作。我也用猫鼬。但是现在。。。我不知道对于一个视频游戏来说,接受这样一个事实是否可以接受:一些中心数据可以在另一个文档中复制,而它们之间没有链接。我想知道,对于一些人来说,处理ID而不是副本是否更好。是的,完全非规范化的方法很难理解使用RDBMS这么长时间了!
var Book = new Mongoose.Schema({
  title: String
  category: {type: String, default: 'fiction'}
});