这是我原来的Schema
var MessageSchema = new Schema({
attachments: [String]
});
这是我更新的架构
var MessageSchema = new Schema({
attachments: [{
fileType: String,
extension: String,
url: String
}]
});
我是否真的必须使用旧架构创建另一个模型来查找()旧文档并处理附件,然后使用更新的架构模型保存文档以便成功将我的集合迁移到新架构?< / p>
答案 0 :(得分:1)
我通常在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脚本来完成这项工作。