MongoError: multi update only works with $ operators while using bulk find and update in node.js
MongoError: multi update only works with $ operators while using bulk find and update in node.js
为什么会报错
MongoError: multi update only works with $ operators
同时使用 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: multi update only works with $ operators
当 updateField
是像 updateField = {}
这样的空对象时发生。当我尝试使用 空对象 更新记录时,出现 bulk
更新的错误。
所以在双关语进入批量之前检查 updateField
是否为 empty。放入bulk
操作if not empty object
喜欢:
if(Object.keys(updateField).length) {
bulk.find(query).update(updateField);
}
这样我的问题就解决了
为什么会报错
MongoError: multi update only works with $ operators
同时使用 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: multi update only works with $ operators
当 updateField
是像 updateField = {}
这样的空对象时发生。当我尝试使用 空对象 更新记录时,出现 bulk
更新的错误。
所以在双关语进入批量之前检查 updateField
是否为 empty。放入bulk
操作if not empty object
喜欢:
if(Object.keys(updateField).length) {
bulk.find(query).update(updateField);
}
这样我的问题就解决了