Обновление многих записей mongoDB поля на основе условия - PullRequest
0 голосов
/ 22 марта 2019

У меня мало записей в моей БД 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 Ответ

2 голосов
/ 22 марта 2019

Вы должны обернуть условия фильтра и установленную цель внутри функции 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/.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...