【问题标题】:mongoose update data information, how to prevent overwritemongoose更新数据信息,如何防止覆盖
【发布时间】:2015-01-29 20:39:11
【问题描述】:

所以我尝试使用 Mongoose 更新 mongodb 数据库中的数据存储 原来的数据结构是这样的

{
    "_id" : ObjectId("234u232kjrkjwebrkw"),
    "local" : {
        "password" : "sdflsdjflsdjlfkjsdlkfjklsdjflksd",
        "email" : "email@email.com"
    },
    "__v" : 0
}

我正在尝试更新“本地”中的“用户名”属性。之后应该是

{
    "_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
}

它已被覆盖。 如何避免这种情况?

注意:在构建模型时,新的“用户名”被定义为 {type:String,default:null}。

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    如果存在则可以进行更新,否则插入:

    更新参数有:findQuery、data、queryOptions、onComplete

    User.update({"_id" : ObjectId("234u232kjrkjwebrkw")}, { $set: { "local.userName": "whatsup" } }, { upsert: true }, function(err){...});
    

    【讨论】:

      猜你喜欢
      • 2019-04-03
      • 1970-01-01
      • 1970-01-01
      • 2022-12-16
      • 2014-10-16
      • 2017-04-16
      • 1970-01-01
      • 2016-04-28
      • 1970-01-01
      相关资源
      最近更新 更多