Joh*_*ohn 5 mongoose mongodb node.js
我有一个架构如下
var FriendsSchema = new Schema({
email: {
type: String
}
firstName: String,
lastName: String,
previousEmails:[{
email:{
type:String
}
}],
createdDate:{
type:Date,
default:Date.now
},
updatedDate:{
type:Date,
default:Date.now
}
});
Run Code Online (Sandbox Code Playgroud)
我想做的是,在更新时,如果“电子邮件”发生更改,我想将“电子邮件”字段更新为传入的新值,并将当前“电子邮件”值推送到“上一个电子邮件”中' 大批。
我可以通过以下两个步骤完成此操作:1)按 id 更新对象,并设置除数组“previousEmails”之外的所有字段2)如果对象的“电子邮件”字段已更改,则将旧值推入“ previousEmails 数组。
我的问题是,是否可以一步完成此操作?所以我有 $push 和 $set 作为我的查询的一部分?
虽然上面的答案很接近。我通过执行以下操作使其工作,该操作很接近,但还添加了 $set,上面未包含
Friend.findOneAndUpdate({_id: req.body.id}, {$set:{email: req.body.email}, $push: { previousEmails: this.email } }
}, {new: true}, function(err, friend){
if (err){
console.log(err);
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2330 次 |
| 最近记录: |