Mongodb

將嵌套 json 結構中 mongo db 中的數據類型欄位 int 更新為 decimal128

  • January 12, 2022

您好已嘗試更新嵌套欄位數據類型

   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" } }] }
              }
           }
        }
     }
  ]
)

引用自:https://dba.stackexchange.com/questions/305982