mongoose更新数据信息,如何防止覆盖
所以我试图在MongoDB数据库中更新数据存储,使用Mongoose原始数据结构看起来像这样
{ "_id" : ObjectId("234u232kjrkjwebrkw"), "local" : { "password" : "sdflsdjflsdjlfkjsdlkfjklsdjflksd", "email" : "email@email.com" }, "__v" : 0 }
我试图更新“本地”的“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}。
你可以做一个更新如果存在,否则插入:
更新的参数是:findQuery,data,queryOptions,onComplete
User.update({"_id" : ObjectId("234u232kjrkjwebrkw")}, { $set: { "local.userName": "whatsup" } }, { upsert: true }, function(err){...});