所以我试图使用Mongoose更新mongodb数据库中的数据存储 原始数据结构如下所示
{
"_id" : ObjectId("234u232kjrkjwebrkw"),
"local" : {
"password" : "sdflsdjflsdjlfkjsdlkfjklsdjflksd",
"email" : "email@email.com"
},
"__v" : 0
}
我正在尝试更新“local”中的“userName”属性。之后它应该是
{
"_id" : ObjectId("234u232kjrkjwebrkw"),
"local" : {
"password" : "sdflsdjflsdjlfkjsdlkfjklsdjflksd",
"email" : "email@email.com",
"userName" : "yowhatsup"
},
"__v" : 0
}
我用过这个
User.findByIdAndUpdate("54a490ab6e13cca1d47870d6", {local:{ userName: 'jasonBorne' }}, { upsert: true }, function(){})
它变成了这个
{
"_id" : ObjectId("234u232kjrkjwebrkw"),
"local" : {
"userName" : "yowhatsup"
},
"__v" : 0
}
它被覆盖了。 怎么避免这个?
注意:当模型结构化时,新的“userName”被定义为{type:String,default:null}。
答案 0 :(得分:1)
如果存在,您可以进行更新,否则插入:
更新的参数是:findQuery,data,queryOptions,onComplete
User.update({"_id" : ObjectId("234u232kjrkjwebrkw")}, { $set: { "local.userName": "whatsup" } }, { upsert: true }, function(err){...});