为什么会出错


  MongoError:多重更新仅适用于$运算符


使用bulk find and update更新多个文档时。

尝试过:

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

var emails = ['[email protected]', '[email protected]', '[email protected]','[email protected]'];
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();

最佳答案

终于我找到了问题所在并解决了这个问题

错误


  MongoError:多重更新仅适用于$运算符


updateField是空的对象(例如updateField = {})时发生。当我尝试使用空对象更新记录时,出现此错误的bulk更新。

因此,在对批量交易进行双关语之前,请检查updateField是否为空。如果不是空对象,则放入bulk操作

喜欢:

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


这样我解决了我的问题

09-26 01:46