2015-10-05 26 views
1

这个工作对我的地方:insertMany无序/ continueOnError在MongoDB中的NodeJS司机

db.collection('test').insert(docsArray, {ordered: false}); 

蒙戈v2.6.10

驱动的NodeJS v2.0.45

但是,同样的代码在服务器上失败:

蒙戈v2.6.11

驱动的NodeJS v2.0.45

我无法理解为什么。

driver docsinsert已在赞成insertOne/insertMany/bulkWrite被depricated。所以,我尝试使用这些新功能,但无济于事。我希望它静静地跳过错误并插入剩余的文档。 现在,insertMany没有无序的插入和bulkWrite没有insertMany 目前正在执行此操作的官方方式是什么?

+0

您是否尝试过'【W:1,keepGoing:真正}'而不是'{下令:假}'? – marekful

+0

@marekful我刚刚尝试过(使用'insert'和'insertMany')。它失败了。虽然有文档中有KeepGoing的示例(对于插入)。 – Sudhanshu

回答

2

发现:

var bulk = db.collection('test').initializeUnorderedBulkOp(); 
for (var i = 0; i < docs.length; i++) { 
    bulk.insert(docs[i]); 
}; 
bulk.execute(function (err, result) { 
    db.close(); 
}); 
+0

不适用于我...使用完全相同的代码..只插入1条记录 –

+0

我在计算中使用它,所以我不得不说,你可能会错过一些东西,或者错误地使用它。 请检查从bulk.execute返回的错误。 – Sudhanshu

+0

我正在以完全相同的方式使用它。但是,我的错误出现在自定义索引而不是_id字段。我在user.name字段上有一个唯一的索引设置,它应该是唯一的字段。每次我运行execute时,如果找到一个重复的键,在插入一个文档后总会失败。 –