Javascript MongoDB在可能存在重复id的地方插入多个文档

Javascript MongoDB在可能存在重复id的地方插入多个文档,javascript,performance,mongodb,error-handling,Javascript,Performance,Mongodb,Error Handling,我正在使用以下方法将对象数组插入MongoDB(我正在分配一个唯一的_id),它正在工作: collection.insert(records, {w:1}, function(err, result) 有些记录可能具有重复的_id(意味着该记录已经在数据库中)。以下是我得到的错误: MongoError: E11000 duplicate key error index: heroku_app23495772.records.$_id_ dup key: { : "2b09aadb900

我正在使用以下方法将对象数组插入MongoDB(我正在分配一个唯一的_id),它正在工作:

collection.insert(records, {w:1}, function(err, result) 
有些记录可能具有重复的_id(意味着该记录已经在数据库中)。以下是我得到的错误:

MongoError: E11000 duplicate key error index: heroku_app23495772.records.$_id_  dup key: { : "2b09aadb900f0e5112b6d03f665fb946" }
即使在第一个对象(重复)上遇到错误,mongoDB仍会在该数组中插入剩余的对象吗?我真的不介意这个错误,如果它不能阻止插入剩余的非重复文档或对其他任何东西产生负面影响

或者,在发送对象数组之前,我是否应该逐字查询每个对象的数据库以查看它是否存在?我认为这样做并不是最好的表现


我只是想找出处理这些副本的最有效方法。

集合中的\u id必须是唯一的,因此不能插入两个具有相同id的文档

collection.insert(records, {continueOnError: true}, function(err, result) {
不确定您的确切用例是什么,但您有另一种方法,例如执行upsert或save

如果您执行了collection.save,则文档将被替换:

如果执行更新,则使用upsert:true可以控制需要更新或创建的内容:


如果这没有帮助,请告诉我们您正试图实现的确切用例,并记住,如果您不提供任何id,系统将为您生成一个。

好的,我终于实现了。include
continueOnError:true
将继续插入批处理的其余部分,即使部分由于重复而未插入

collection.insert(records, {continueOnError: true}, function(err, result) {

如果{continueOnError:true}本身不起作用(因为它不适合我),那么可能需要添加{keepGoing:true}。最终结果将是{keepGoing:true,continueOnError:true}