Nic*_*ons 24 mongoose mongodb node.js
我们正在快速开发一个使用Mongoose的应用程序,我们的架构经常发生变化.我似乎无法弄清楚更新现有文档的架构的正确方法,而不是将它们吹走并从头开始重新创建它们.
我遇到了http://mongoosejs.com/docs/api.html#schema_Schema-add,看起来是正确的.关于如何实际实现这一点的文档很少甚至没有,这对于MongoDB的新手来说非常困难.
我只是想添加一个名为enabled的新字段.我的架构定义是:
var sweepstakesSchema = new Schema({
client_id: {
type: Schema.Types.ObjectId,
ref: 'Client',
index: true
},
name: {
type: String,
default: 'Sweepstakes',
},
design: {
images: {
type: [],
default: []
},
elements: {
type: [],
default: []
}
},
enabled: {
type: Boolean,
default: false
},
schedule: {
start: {
type: Date,
default: Date.now
},
end: {
type: Date,
default: Date.now
}
},
submissions: {
type: Number,
default: 0
}
});
Run Code Online (Sandbox Code Playgroud)
Joh*_*yHK 14
Mongoose没有内置关于迁移现有文档以遵守模式更改的内容.您需要根据需要在自己的代码中执行此操作.在像新enabled字段这样的情况下,编写代码可能是最干净的,因此它将缺少的enabled字段视为已设置为处理,false因此您不必触及现有文档.
对于架构更改本身,您只需更新您Schema所显示的定义,但更改像带有default值的新字段只会影响未来的新文档.
Vic*_*kar 14
db.sweepstakesModel.find( { enabled : { $exists : false } } ).forEach(
function (doc) {
doc.enabled = false;
db.sweepstakesModel.save(doc);
}
)
Run Code Online (Sandbox Code Playgroud)
将您的猫鼬模型名称视为"sweepstakesModel",此代码会将"enabled"字段的布尔值"false "添加到集合中的所有预先存在的文档中.
| 归档时间: |
|
| 查看次数: |
17751 次 |
| 最近记录: |