如何更新一个对象,并在mongoose同时推入到一个数组
我有一个架构如下
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 } });
我想要做的是,在更新时,如果“电子邮件”发生变化,我想将“电子邮件”字段更新为传入的新值,并将当前的“电子邮件”值推送到“previousEmails 'arrays。
我可以通过以下两个步骤来完成:1)通过id更新对象,并设置除了数组'previousEmails'之外的所有字段。2)如果对象的'email'字段被改变,则将旧值推入' previousEmails'数组。
我的问题是,是否有可能一步到位呢? 所以我有我的查询党的$推和$设置?
虽然上面的答案是接近的。 我通过做下面的工作,这是接近,但也增加了$集,这是不包括上面
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); } });
Friend.findOneAndUpdate({_id: req.body.id}, {email: req.body.email, $push: { previousEmails: this.email } }, {new: true}, function(err, friend){ if (err){ console.log(err); } });