如何编写MongoDB脚本实现指定条件下数组元素的子串替换
MongoDB数组元素子串批量替换脚本
需求说明
现有文档结构如下:
{ "field": "value", "facilityId": "H001", "alternativeId": ["defaultID#12312-213-1314"] }
需要完成以下操作:
- 筛选所有
facilityId字段值为H001的文档 - 将匹配文档中
alternativeId数组每个元素里的defaultID子串,全部替换为NEWID
适用版本
MongoDB 4.2及以上版本(支持更新管道语法)
执行脚本
// 请将下方的collection替换为你实际的集合名 db.collection.updateMany( // 筛选条件 { "facilityId": "H001" }, // 更新管道逻辑 [ { $set: { alternativeId: { $map: { input: "$alternativeId", as: "item", in: { $replaceAll: { input: "$$item", find: "defaultID", replacement: "NEWID" } } } } } } ] )
注意事项
- 如果只需替换每个元素中第一个出现的
defaultID,可以把$replaceAll替换为$replaceOne - 如果你实际数据里的子串是示例中拼写的
deafaultID(拼写多了a),请调整find参数的取值为实际的子串内容 - 执行前建议先运行
db.collection.find({ "facilityId": "H001" })确认匹配的文档范围,避免误操作
内容的提问来源于stack exchange,提问作者Alf joy
相关产品推荐
相关产品推荐

