我正在使用批量upsert一次更新/添加多个文档到我的数据库:
var bulk = collection.initializeUnorderedBulkOp();
docs.forEach(function(doc, index, array){
bulk.find({'docId' : doc.docId}).upsert().updateOne(doc);
});
bulk.execute();
在bulk.execute
上,这会返回以下错误:
/myPath/node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:771
catch(err) { process.nextTick(function() { throw err}); }
^
TypeError: undefined is not a function
at /myPath/node_modules/mongodb/lib/bulk/unordered.js:470:5
我查看了mongodb模块中的代码,它似乎在回调失败:
// Execute batches
return executeBatches(this, function(err, result) {
callback(err, result);
});
数据正在按预期完全写入数据库,但仍然会抛出此错误,我无法解决我可能做的事情。
我已经通过使用普通对象排除了数据问题,并且使用批量插入而不是upsert,因为它们更简单,但结果是相同的。
答案 0 :(得分:5)
您需要invoke bulk.execute with a callback。
bulk.execute(function(err,results) {
if(err)
console.error(err);
else
console.log(results);
});
或类似的,应该工作。