为什么会收到错误
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();
答案 0 :(得分:2)
最后我得到了问题并解决了这个问题
错误
MongoError:多次更新仅适用于$运算符
updateField
为updateField = {}
之类的空对象时发生。当我尝试使用空对象更新记录时,bulk
更新时出现此错误。
所以在进入批量检查之前检查updateField
是否为空。如果不是空对象
bulk
操作
像:
if(Object.keys(updateField).length) {
bulk.find(query).update(updateField);
}
通过这种方式我解决了我的问题