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();
最后,我得到了什么问题,解决了这个问题
错误
MongoError:多更新只适用于$操作符
当updateField
是空的对象,如updateField = {}
。 当我试图更新与空对象的logging然后得到此bulk
更新的错误。
所以在进入批量检查之前, updateField
是否为空 。 如果不是空物体,则进入bulk
操作
喜欢:
if(Object.keys(updateField).length) { bulk.find(query).update(updateField); }
这样我解决了我的问题