我正在生产环境中运行一个使用MongoDB和Mongoose的NodeJS应用程序,其中包含一个类似于以下代码的Mongoose Schema:
var Product = new Schema({
"name": { type: String, required: true }
, "description": { type: String }
});
现在,作为一个新的要求,我正在本地将一个新的属性添加到模式中,如下所示:
var Product = new Schema({
"name": { type: String, required: true }
, "description": { type: String }
, "isPublic": { type: Boolean, default: true }
});
当我重启我的NodeJS进程时,我期望所有当前文档(产品)都会更新,使得每个文档都有一个名为
isPublic
的属性,其值为true
。但实际上没有任何文档拥有这个新属性,如果我执行
someProduct.Save({ isPublic: true })
,它就会被添加。问题:有什么方法可以实现这一点吗?我知道我可以用Mongo客户端从命令行执行$set操作,但我想知道是否有一种方式让Mongoose在进程重新启动后自动添加缺失的属性。