避免mongodb批量插入重复键错误

我如何执行批量插入并继续在重复键错误的情况下?

我有一个唯一索引在id字段( 不是 _id )和一些数据的集合。 然后我得到更多的数据,我只想添加不存在的文件的集合。

我有以下代码:

 let opts = { continueOnError: true, // Neither ContinueOnError: true, // of keepGoing: true, // this KeepGoing: true, // works }; let bulk = collection.initializeUnorderedBulkOp( opts ); bulk.insert( d1 ); bulk.insert( d2 ); bulk.insert( d3 ); ... bulk.insert( dN ); let result = yield bulk.execute( opts ); // this keep throwing duplicate key error 

而我只是想忽略这些错误,并让所有的排队操作成批完成。

我在npm模块api中search,在MongoDB api中searchBulk , initializeUnorderedBulkOp和批量编写的文档,但没有运气。


另外在无序操作的文档中,他们说 :

error handling

如果在处理其中一个写入操作的过程中发生错误,MongoDB将继续处理列表中剩余的写入操作。

这是不正确的(至less在我的情况下):(

任何想法都欢迎!

       

网上收集的解决方案 "避免mongodb批量插入重复键错误"

你可以使用db.collection.insertMany(),(在3.2版本中是新的)。

下令:假

在命令为false的情况下,如果键重复出现错误,插入操作将继续执行任何剩余的文档。

这里是链接到文档: https : //docs.mongodb.com/v3.2/reference/method/db.collection.insertMany/