MongoDB如何批量修改集合全量文档的字段名及值存储格式
MongoDB 字段修改操作语句
适用MongoDB 4.2及以上版本(推荐)
直接使用带聚合管道的updateMany语句即可完成全集合批量更新:
db.foo.updateMany({}, [ // 新增符合结构要求的新字段 { $set: { languages: ["$language"], documentIds: ["$documentId"] } }, // 删除原有旧字段 { $unset: ["language", "documentId"] } ])
参数说明:
- 第一个参数
{}表示匹配集合中所有文档 $set阶段直接引用原有字段的值构建单元素数组,赋值给新字段$unset阶段清理不需要的旧字段
适用MongoDB 4.2以下版本
低版本不支持聚合管道更新,需要遍历游标逐个更新文档:
db.foo.find().forEach(doc => { db.foo.updateOne( { _id: doc._id }, { $set: { languages: [doc.language], documentIds: [doc.documentId] }, $unset: { language: "", documentId: "" } } ) })
注意:执行更新前请先备份集合数据,建议先选取少量测试文档验证更新逻辑符合预期后,再执行全量操作。
内容的提问来源于stack exchange,提问作者Ufuk UYSAL
相关产品推荐
相关产品推荐

