使用Mongoose版本3.6.4
假设我有一个像这样的MongoDB文档:
{
"_id" : "5187b74e66ee9af96c39d3d6",
"profile" : {
"name" : {
"first" : "Joe",
"last" : "Pesci",
"middle" : "Frank"
}
}
}
我为用户提供以下架构:
var UserSchema = new mongoose.Schema({
_id: { type: String },
email: { type: String, required: true, index: { unique: true }},
active: { type: Boolean, required: true, 'default': false },
profile: {
name: {
first: { type: String, required: true },
last: { type: String, required: true },
middle: { type: String }
}
}
created: { type: Date, required: true, 'default': Date.now},
updated: { type: Date, required: true, 'default': Date.now}
);
我提交了一个表单,其中包含一个名为: profile[name][first]
价值为 Joseph
因此我想只更新用户的名字,但留下他的最后和中间人,我想我会这样做:
User.update({email: "joe@foo.com"}, req.body, function(err, result){});
但是,当我这样做时,它会“删除” profile.name.last
和 profile.name.middle
属性和我最终得到一个看起来像这样的文档:
{
"_id" : "5187b74e66ee9af96c39d3d6",
"profile" : {
"name" : {
"first" : "Joseph"
}
}
}
所以它基本上覆盖了所有 profile
同 req.body.profile
,我觉得有道理。有没有办法绕过它而不必通过在更新查询中指定我的字段而不是更明确 req.body
?