在猫鼬中处理迁移
Handling migration in mongoose
这是我的原始架构
var MessageSchema = new Schema({
attachments: [String]
});
这是我更新的架构
var MessageSchema = new Schema({
attachments: [{
fileType: String,
extension: String,
url: String
}]
});
我真的必须使用旧架构创建另一个模型来查找()旧文档并处理附件,然后使用更新的架构模型保存文档,以便将我的集合成功迁移到新架构?
我通常重命名 mongo shell 中的遗留字段:db.message.updateMany( {}, { $rename: { "attachments": "attachments_v1" } } );
并使用
var MessageSchema = new Schema({
attachments_v1: [String],
attachments: [{
fileType: String,
extension: String,
url: String
}]
});
在一段时间内使用转换逻辑来分散负载并在访问文档时修改文档。如果集合足够小,您可以一次性转换所有内容。如果转换逻辑很简单,您可以从 shell 开始。否则,编写一个 mongoose 脚本来完成这项工作。
这是我的原始架构
var MessageSchema = new Schema({
attachments: [String]
});
这是我更新的架构
var MessageSchema = new Schema({
attachments: [{
fileType: String,
extension: String,
url: String
}]
});
我真的必须使用旧架构创建另一个模型来查找()旧文档并处理附件,然后使用更新的架构模型保存文档,以便将我的集合成功迁移到新架构?
我通常重命名 mongo shell 中的遗留字段:db.message.updateMany( {}, { $rename: { "attachments": "attachments_v1" } } );
并使用
var MessageSchema = new Schema({
attachments_v1: [String],
attachments: [{
fileType: String,
extension: String,
url: String
}]
});
在一段时间内使用转换逻辑来分散负载并在访问文档时修改文档。如果集合足够小,您可以一次性转换所有内容。如果转换逻辑很简单,您可以从 shell 开始。否则,编写一个 mongoose 脚本来完成这项工作。