在猫鼬中更新多个文档
Updating multiple documents in mongoose
我的数据库中有以下数据mongodb
> db.poepledatas.find()
{ "_id" : ObjectId("5ef83e24b5b88209109affbd"), "name" : "eren", "age" : 30, "__v" : 0 }
{ "_id" : ObjectId("5ef85fef14e2da588c79683a"), "name" : "lixi", "age" : 30 }
{ "_id" : ObjectId("5ef866df14e2da588c79683b"), "name" : "deku", "age" : 29 }
我想将上面名字为eren和lixi的文档的“年龄”字段更新为40
有没有办法在一个更新命令中做到这一点
我一直在努力做到以下几点
personModel.updateMany({name:"eren",name:"lixi"},{age:40},function(err){
if(err){
console.log(err);
}
else{
console.log("updated");
}
});
但上面的代码似乎只是将名为“lixi”的一条记录的年龄更改为 40
> db.poepledatas.find()
{ "_id" : ObjectId("5ef83e24b5b88209109affbd"), "name" : "eren", "age" : 30, "__v" : 0 }
{ "_id" : ObjectId("5ef85fef14e2da588c79683a"), "name" : "lixi", "age" : 40 }
{ "_id" : ObjectId("5ef866df14e2da588c79683b"), "name" : "deku", "age" : 29 }
有什么方法可以在一个命令中将文档“name”eren 和 lixi 都更新为“age”=40?
你必须有Or条件
{"$or" : [{name:"eren"}, {name:"lixi"}]}
你的更新语句应该是
{"$set" :{age:40}}
是,使用$in。
另外,您的更新部分有一个小的语法错误。您没有使用像 $set
这样的更新运算符。因为它将使用此语法作为 replacement document 工作。
personModel.updateMany({name: {$in: ["lixi", "eren"]}}, {$set: {age: 40}}, function (err) {
if (err) {
console.log(err);
} else {
console.log("updated");
}
});
我的数据库中有以下数据mongodb
> db.poepledatas.find()
{ "_id" : ObjectId("5ef83e24b5b88209109affbd"), "name" : "eren", "age" : 30, "__v" : 0 }
{ "_id" : ObjectId("5ef85fef14e2da588c79683a"), "name" : "lixi", "age" : 30 }
{ "_id" : ObjectId("5ef866df14e2da588c79683b"), "name" : "deku", "age" : 29 }
我想将上面名字为eren和lixi的文档的“年龄”字段更新为40 有没有办法在一个更新命令中做到这一点
我一直在努力做到以下几点
personModel.updateMany({name:"eren",name:"lixi"},{age:40},function(err){
if(err){
console.log(err);
}
else{
console.log("updated");
}
});
但上面的代码似乎只是将名为“lixi”的一条记录的年龄更改为 40
> db.poepledatas.find()
{ "_id" : ObjectId("5ef83e24b5b88209109affbd"), "name" : "eren", "age" : 30, "__v" : 0 }
{ "_id" : ObjectId("5ef85fef14e2da588c79683a"), "name" : "lixi", "age" : 40 }
{ "_id" : ObjectId("5ef866df14e2da588c79683b"), "name" : "deku", "age" : 29 }
有什么方法可以在一个命令中将文档“name”eren 和 lixi 都更新为“age”=40?
你必须有Or条件
{"$or" : [{name:"eren"}, {name:"lixi"}]}
你的更新语句应该是
{"$set" :{age:40}}
是,使用$in。
另外,您的更新部分有一个小的语法错误。您没有使用像 $set
这样的更新运算符。因为它将使用此语法作为 replacement document 工作。
personModel.updateMany({name: {$in: ["lixi", "eren"]}}, {$set: {age: 40}}, function (err) {
if (err) {
console.log(err);
} else {
console.log("updated");
}
});