根据条件更新字段的许多mongoDB记录

时间:2019-03-22 00:58:26

标签: javascript database mongodb nosql

我的Mongo数据库中没有几条记录。 currentStatus字段具有三种状态(“ IDLE”,“ ACTIVE”,“ SHUTDOWN”)之一。我想将currentStatus字段中的所有记录从“ IDLE”或“ ACTIVE”更新为“ SHUTDOWN”。我需要确保它们不在更新之前的“关闭”状态。

该字段如下:

enter image description here

试过了,但是没用。

var currentStatusActive = this.collection.find({currentStatus: "ACTIVE"});
var currentStatusIdle = this.collection.find({currentStatus : "IDLE"});

if(currentStatusActive.currentStatus == "ACTIVE" || currentStatusIdle.currentStatus == "IDLE"){
var newStatus = {$set: {currentStatus: "SHUTDOWN"} };
this.collection.updateMany(newStatus, function(err,res){
if (err) throw err;
})
}

1 个答案:

答案 0 :(得分:2)

您必须将过滤条件和设置目标包装在mongodb updateMany函数中。

try {
   db.collection.updateMany(
      {"currentStatus": {$in:["ACTIVE","IDLE"]} },
      { $set: { "currentStatus" : "SHUTDOWN" } }
   );
} catch (e) {
   print(e);
}

有关更多说明,请参见https://docs.mongodb.com/manual/reference/method/db.collection.updateMany/