【问题标题】:Updating multiple documents in mongoose在猫鼬中更新多个文档
【发布时间】:2020-10-18 14:36:08
【问题描述】:

我的数据库 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?

【问题讨论】:

    标签: node.js mongodb mongoose mongodb-query updates


    【解决方案1】:

    你必须有或条件

     {"$or" : [{name:"eren"}, {name:"lixi"}]}
    

    你的更新声明应该是

    {"$set" :{age:40}}
    

    【讨论】:

      【解决方案2】:

      是的,使用$in

      此外,您的更新部分也有轻微的语法错误。您没有使用像 $set 这样的更新运算符。因为它将使用此语法作为replacement document 工作。

      personModel.updateMany({name: {$in: ["lixi", "eren"]}}, {$set: {age: 40}}, function (err) {
          if (err) {
              console.log(err);
          } else {
              console.log("updated");
          }
      });
      

      【讨论】:

        猜你喜欢
        • 2018-08-20
        • 1970-01-01
        • 2011-10-05
        • 2020-06-27
        • 2018-09-08
        • 2018-01-22
        • 2013-12-04
        • 2016-05-24
        • 1970-01-01
        相关资源
        最近更新 更多