Mongodb 更新mongoose子模式对象

Mongodb 更新mongoose子模式对象,mongodb,express,mongoose,mongoose-schema,subdocument,Mongodb,Express,Mongoose,Mongoose Schema,Subdocument,我的模式是这样的 const subSchema=新模式({/*…*/}) const mainSchema=新模式({ //..., 傅:{ 类型:子模式, 默认值:{} } }) 常量模型=模型('Model',mainSchema) 如果我这样做,整个foo将被req.body Model.findByIdAndUpdate(_id,{foo:req.body},{new:true,runValidators:true}) 但我希望替换req.body中仅有的字段,其余字段保持不变您可

我的模式是这样的

const subSchema=新模式({/*…*/})
const mainSchema=新模式({
//...,
傅:{
类型:子模式,
默认值:{}
}
})
常量模型=模型('Model',mainSchema)
如果我这样做,整个
foo
将被
req.body

Model.findByIdAndUpdate(_id,{foo:req.body},{new:true,runValidators:true})

但我希望替换
req.body
中仅有的字段,其余字段保持不变

您可以创建一个变量,其中包含要首先从
req.body
更新的字段。比如:

let update = Object.keys(req.body).reduce((acc, cur) => {
   acc[`foo.${cur}`] = req.body[cur];
   return acc;
}, {});

Model.findByIdAndUpdate(_id, update,...