为什么会出错
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);
}
这样我解决了我的问题