我正在使用 findOne 然后更新我得到的一个文档,但我想使用 find 以便我可以找到所有文档,然后将它们全部更新

Posted

技术标签:

【中文标题】我正在使用 findOne 然后更新我得到的一个文档,但我想使用 find 以便我可以找到所有文档,然后将它们全部更新【英文标题】:I'm using findOne then updating the one document I get but I wanna use a find so that I can find all the documents and then updating them all 【发布时间】:2022-01-07 12:43:22 【问题描述】:

这里的问题是我只用给定的电子邮件更新第一个文档,但我想用这封电子邮件更新他找到的所有电子邮件,所以我想使用 find() 但我不知道该写什么更新找到的所有文档


router.route("/Updateinfo").post((req, res) => 
  console.log("updateinfo");
 console.log(email);
 const z = req.body.Name;
 const d = req.body.Password;
 const s = req.body.Email;
 const v = req.body.Type;
 console.log(z);
if(v!="admin")
 User.findOne(Email: email, function (err, user) 
  user.Name = z;
  user.Password = d;
  user.Email = s;
  user.Type = v;

 
  user.save(function (err) 
      if(err) 
          console.error('ERROR!');
      
  );
);

【问题讨论】:

这能回答你的问题吗? How can I update multiple documents in mongoose? 【参考方案1】:

如果您想用相同的数据更新与相同查询匹配的多个文档,则需要使用updateMany

见https://mongoosejs.com/docs/api.html#model_Model.updateMany

【讨论】:

你能告诉我如何使用 updatemany 执行我正在做的事情,因为我一直在尝试它,但它总是失败,提前谢谢你 User.updateMany( Email: email , $set: Name: z )

以上是关于我正在使用 findOne 然后更新我得到的一个文档,但我想使用 find 以便我可以找到所有文档,然后将它们全部更新的主要内容,如果未能解决你的问题,请参考以下文章

TypeORM 在使用 .find()/.findOne() 时返回 undefined

[usedIf在数据库中时,sequelize findOne找不到用户标识

MongoDB原子“findOrCreate”:findOne,如果不存在则插入,但不更新

猫鼬 findOne 方法返回 null

更新 findOne()/find()/findById() 返回的文档 - mongoose

更新 findOne()/find()/findById() 返回的文档 - mongoose