MongoDB 4.4.1批量更新集合:新增字段并赋值同集合已有字段
批量给MongoDB集合新增字段并复制现有字段值(MongoDB 4.4.1)
当然可行!你的MongoDB 4.4.1版本刚好支持聚合管道式的更新操作,完全不用逐个文档执行更新,一条命令就能批量搞定所有数千条文档。
你可以直接使用updateMany()方法,配合聚合管道来实现:
db.mycoll.updateMany( {}, // 匹配所有文档 [ { $set: { col2: "$col1" } } // 新增col2字段,值与col1保持一致 ] )
细节说明:
- 第一个参数
{}表示匹配集合里的所有文档,这样就会批量处理每一条数据; - 第二个参数用数组包裹聚合管道(MongoDB 4.2+支持这种写法),
$set操作符会自动给没有col2字段的文档新增该字段,并且因为$col1直接引用原字段的值,col2会自动继承col1的NumberInt类型,不需要额外做类型转换; - 这个操作是原子性的,执行效率很高,完全适配你数千条文档的场景。
如果想先验证效果,可以先针对少量文档测试:
db.mycoll.updateMany( {}, [ { $set: { col2: "$col1" } } ], { limit: 5 } // 只更新前5条文档 )
确认没问题后再去掉limit参数执行全量更新即可。
内容的提问来源于stack exchange,提问作者raisul
相关产品推荐
相关产品推荐

