使用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))
。这消除了这个问题,但非常慢。
其他人看到过这种行为,还是有一个可靠的解决方案?