【发布时间】:2014-12-09 23:18:10
【问题描述】:
我在生产中使用了一个使用 MongoDB 和 Mongoose 运行的 NodeJS 应用程序,它内部有一个 Mongoose Schema,例如:
var Product = new Schema({
"name": { type: String, required: true }
, "description": { type: String }
});
现在,作为一项新要求,我要在本地向 Schema 添加一个新属性,如下所示:
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 是否可以在进程重新启动时更改架构后添加缺少的属性。
【问题讨论】: