mongo层层嵌套文档批量更新参考

背景:项目前期,在mongo数据库中插入了大批数据。后期由于开发纬度变化,需要批量更新该批数据。考虑到java实现mongo批量更新替换数据,过程繁琐,且性能较低,故探索mongo本身自带批量更新方法。

准备:单条文档图示如下

此次需要批量修改键[rs]对应的值,数据层层嵌套,较为复杂。

实现:

mongo简单更新方法参考:db.test_collection.updateMany({"age":{$gt:"10"}},{$set:{"status":"xyz"}})

在此基础上进行改造如下:

db.getCollection('third.call.records').updateMany( { "mobile" : "137xxxx" } , { $set : { "rawData" : {"rs":'{"task_id":"24517218f89e432d83bc1bf0d43e262c","data":{"raw_data":......},"success":"true","note":""},"code":"0"}'}}  );

其中{ "mobile" : "137xxxx" }为匹配条件,选定更改数据范围,此后将[rs]对应新值替换即可实现批量更新。

注意:由于[rs]值较大,400K+,尝试其他方法无效后,采用Robo 3T客户端执行,为了看到执行结果,将Options下Change Shell TimeOut值修改为10分钟或更大。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值