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();
1 ответ
Решение
Наконец я понял, в чем была проблема, и решил эту проблему
Ошибка
MongoError: мультиобновление работает только с $ операторами
произошло, когда updateField
пустой объект, как updateField = {}
, Когда я пытался обновить запись с пустым объектом, то получал эту ошибку для bulk
Обновить.
поэтому перед каламбуром проверил, что updateField
пусто или нет. положить в bulk
операция, если не пустой объект
лайк:
if(Object.keys(updateField).length) {
bulk.find(query).update(updateField);
}
Таким образом я решил свою проблему