MongoError: множественное обновление работает только с операторами $ при использовании массового поиска и обновления в node.js

Почему получаю ошибку

MongoError: мультиобновление работает только с $ операторами

при использовании bulk find and update обновить несколько документов.

Пытался:

var bulk = db.collection('users').initializeUnorderedBulkOp();

var emails = ['a@gmail.com', 'b@gmail.com', 'c@gmail.com','d@gmail.com'];
var allStatus = ['s1', 's2', 's3', ''];

for (var i =0; i< allStatus.length; i++) {
  var query = { email: emails[i], status: { '$ne': allStatus[i] } };
  var updateField = {};
  if(allStatus[i]) {
      updateField = {
        $set: {status: allStatus[i], date: new Date()},
        $push: {
          notes: {note: 'jdf'+i, date: new Date()},
          history: {status: allStatus[i], date: new Date()}
        }
      };
  }
  bulk.find(query).update(updateField);
}

bulk.execute();

1 ответ

Решение

Наконец я понял, в чем была проблема, и решил эту проблему

Ошибка

MongoError: мультиобновление работает только с $ операторами

произошло, когда updateField пустой объект, как updateField = {}, Когда я пытался обновить запись с пустым объектом, то получал эту ошибку для bulk Обновить.

поэтому перед каламбуром проверил, что updateField пусто или нет. положить в bulk операция, если не пустой объект

лайк:

if(Object.keys(updateField).length) {
   bulk.find(query).update(updateField);
}

Таким образом я решил свою проблему

Другие вопросы по тегам