Mongodb
將嵌套 json 結構中 mongo db 中的數據類型欄位 int 更新為 decimal128
您好已嘗試更新嵌套欄位數據類型
db.test.find().forEach(function(data){ data.age = NumberDecimal(data.age); data.phone.$.mob = NumberDecimal(data.phone.$.mob); db.test.updateOne({_id:data._id}, {$set:{age:data.age},{phone.$.mob:data.phone.$.mob}}) })
上面的查詢我嘗試執行但無法更新數據類型
文件結構是
{ _id: (objectId) "lastname":"test", "age":25(int), "phone":[ 0:{ "_id":(objectId), "mob":9000112 (int) }, 1:{ "_id":(objectId), "mob":88909 (int) }, 2:{ "_id":(objectId), "mob":88909 (int) } ] }
需要提前將每個 int 欄位更新為 decimal128 數據類型
試試這個:
db.collection.updateMany({}, [ { $set: { age: { $toDecimal: "$age" }, phone: { $map: { input: "$phone", in: { $mergeObjects: ["$$this", { mob: { $toDecimal: "$$this.mob" } }] } } } } } ] )