Mongoose批量插入有时会插入两次(导致E11000重复错误)

时间:2015-12-03 20:01:00

标签: node.js mongodb mongoose

使用this package和批量插入,我循环访问我的CSV以将我的记录存入我的馆藏。

它似乎太快了#34;或许。相同的记录有时会被保存两次。

精简版:(我的实际功能非常抽象,可用性和超长)

var bulk = ThisCollection.collection.initializeOrderedBulkOp();
lr = new LineByLineReader('myfile.csv');
lr.on("line", function (line) {
  lr.pause();           
  line = CSVtoArray(line); //custom function parses line of CSV
  var saveObj = mapObj(line); //custom function matches line values to object in appropriate format for schema
  bulk.insert(saveObj);
  lr.resume();
})

lr.on("end", function(){
  bulk.execute(function(err){
    //getting the below error logged here
  });
});

请注意_id个密钥是自动生成的 - 我 以任何方式创建这些密钥。它们传递到saveObj时,bulk.insert()上尚不存在。

当我这样做时,我一直都是

E11000 duplicate key error index: test.locations.$_id_ dup key: {: ObjectId(\'5660a055e6d1c8400e9c933e\') }

在第82个记录上。

@robertklep确定了这个问题。我们尝试了bulk.insert(Object.assign({}, saveObj))。这消除了这个问题,但非常慢

其他人看到过这种行为,还是有一个可靠的解决方案?

0 个答案:

没有答案