Mongodb Mongoose:findByIdAndUpdate()如何根据现有数据有条件地更新?

Mongodb Mongoose:findByIdAndUpdate()如何根据现有数据有条件地更新?,mongodb,mongoose,Mongodb,Mongoose,当使用findbyiandupdate()或findOneAndUpdate()(即,以原子方式更新数据库以避免竞争条件)时,是否有方法引用现有数据以有条件地更新字段 PersonModel.findByIdAndUpdate( req.user.id, { $set:{ //将此设置为true //例如,如果person.color==蓝色 hasFavoriteColor:是的, } }, {新:正确}, (错误,updateDoc=>{ 如果(错误)返回; 返回UpdateDoc; });

当使用
findbyiandupdate()
findOneAndUpdate()
(即,以原子方式更新数据库以避免竞争条件)时,是否有方法引用现有数据以有条件地更新字段

PersonModel.findByIdAndUpdate(
req.user.id,
{
$set:{
//将此设置为true
//例如,如果person.color==蓝色
hasFavoriteColor:是的,
}
},
{新:正确},
(错误,updateDoc=>{
如果(错误)返回;
返回UpdateDoc;
});
);

我不确定您是否可以这样做,我在文档中看不到任何内容。但是,对于您的查询,您可以在过滤器部分添加有关颜色的条件,如下所示:

PersonModel.findOneAndUpdate(
  {_id : req.user.id, color : "blue"},
  {
    $set: { 
      // set this to true 
      // if person.color === blue for example
      hasFavoriteColor: true, 
    }
  },
  { new: true },
  (err, updatedDoc => {
    if (err) return;
    return updatedDoc;
  });
);

你能用一些例子解释一下吗?@TusharGupta curioustushar希望在用户保存现有电子邮件时更新RequireMailVerification字段。因此,如果
oldmail!==新建电子邮件
。oldEmail将已保存在文档中,newEmail是用于与oldEmail进行比较的变量