【发布时间】:2015-05-17 04:41:21
【问题描述】:
假设我有这个架构:
var UserSchema = new Schema({
name : {
firstName : String,
lastName : String
}
});
我创建了这个用户:
User.create({
name : {
firstName : Bob,
lastName : Marley
}
}, function (err, user) {
if(err) {
return console.error(err);
} else {
return console.log(user);
}
});
我注意到如果我这样做:
User.findOneAndUpdate({_id: userId}, { name: { firstName : "Damian" } }, function (err, user) {
if(err) {
return console.error(err);
} else {
return console.log(user);
}
});
我现在的用户是:
user = {
name : {
firstName : "Damian"
}
}
但是,如果我这样做:
User.findOneAndUpdate({_id: userId}, { "name.firstName" : "Damian" }, function (err, user) {
if(err) {
return console.error(err);
} else {
return console.log(user);
}
});
我的用户是:
user = {
name : {
firstName : "Damian",
lastName : "Marley"
}
}
有没有办法将未填写所有属性的对象传递给findOneAndUpdate,并保留以前存在的属性,而不删除它们? (与 Mongo 中的 $set 功能相同)。这真的很烦人...
【问题讨论】: