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); } 

这样我解决了我的问题

Interesting Posts