如何在猫鼬数据库中更新2个或更多唯一文档

时间:2019-08-29 10:14:43

标签: node.js express mongoose

我在mydb中有3个唯一文档,我想使用随机生成的唯一密钥来更新每个文档。

我尝试了updateMany()和update({multi:true})。使用upadteMany(),我们可以更新与查询匹配的文档。有什么办法可以解决这个问题?

先谢谢了。

如果我有以下文件:

doc1 : {
  _id: 1,
  name: 'John Smith',
  age: 20
}

doc2 : {
  _id: 2,
  name: 'Jane Smith',
  age: 22
}

我希望客户端能够在相同的更新请求中将两个文档传递给我。在这种情况下,可以为两个文档添加地址。

有没有一种方法可以向mongo发送一条更新语句,以便它使用名称值更新两个文档?

  

您提供的答案很好。但我修改了该代码,看起来就像

      _id: { $in: [req.params.noteId,req.params.noteId,req.params.noteId]}
   }
   Note.updateMany(query,
       {$set:{
           lname: req.body.lname || "Untitled Note",
           age: req.body.age
       }}
, { new: true }
   )

此代码不起作用

1 个答案:

答案 0 :(得分:1)

从下面的代码中,您可以解决您的问题。  //考虑以下对象进行更新

doc1 : {
  _id: 1,
  name: 'John Smith',
  age: 20
}

doc2 : {
  _id: 2,
  name: 'Jane Smith',
  age: 22
}

以下代码会将两个文档的名称都更改为manjesha

var criteria =  {
        _id : { $in : [ "1"  , "2"] }
}
userModel.update(criteria  , { name: "manjesha" }, { multi: true },function(err , found){
        if(err){
            res.send(err);
        }else{
            res.send(found);
        }
});
// $in -The $in operator selects the documents where the value of a field equals any value in the specified array.

这将完美解决您的问题。