在执行更新时,如何保护未更新的数据。 我注意到当我有一个像这样的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(){
})
此更新清除了所有未更新的内容。 如何只更新要更新的字段并保持其余字段不变
答案 0 :(得分:0)
请查看下面的链接,在此情况下可能会为您提供帮助。
https://docs.mongodb.com/manual/reference/operator/update/set/
,然后通过设置
重试upsert:false
答案 1 :(得分:0)
实际上,您的问题是由于safe
标志引起的。
我不确定为什么会发生这种行为,但是我建议您摆脱它。 这是非常老的mongodb版本的残余,该版本以前默认情况下会执行未确认的写入。使得这个选项在当今时代不是很有用。