我在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 }
)
此代码不起作用
答案 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.
这将完美解决您的问题。