1. 程式人生 > >mongo層層巢狀文件批量更新參考

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分鐘或更大。