javascript mongooose在更新期间保护mongodb中的数据完整性

时间:2019-06-17 14:12:22

标签: javascript node.js mongodb express mongoose

在执行更新时,如何保护未更新的数据。 我注意到当我有一个像这样的mongodb模式

var SCHEMA1 = mongoose.Schema({
    full_name: String,
    other_fields : String//etc
    schema2_foreign_field:{
        type: Schema.Type.ObjectId,
        ref: 'schema2'
    },
    array_field:[{
        field1: String,
        field2: String
    }]
})

运行这样的更新操作

modelDetail.update({
    full_name: 'Bryant Smith'
},
{$set:{
    other_fields: 'Some string',
    schema2_foreign_field:'510a073b3b6 - idstring'
}},
{safe:true, upsert:true},
function(){

})

此更新清除了所有未更新的内容。 如何只更新要更新的字段并保持其余字段不变

2 个答案:

答案 0 :(得分:0)

请查看下面的链接,在此情况下可能会为您提供帮助。

https://docs.mongodb.com/manual/reference/operator/update/set/

,然后通过设置

重试
  

upsert:false

答案 1 :(得分:0)

实际上,您的问题是由于safe标志引起的。

我不确定为什么会发生这种行为,但是我建议您摆脱它。 这是非常老的mongodb版本的残余,该版本以前默认情况下会执行未确认的写入。使得这个选项在当今时代不是很有用。