2017-08-11 87 views
0

我正在使用猫鼬将批量数据插入数据库。 虽然数据在数据库中保存成功,但是insertMany抛出E11000重复键错误。InsertMany抛出E11000重复键错误,但插入成功

这里是我的代码:

var data = [ 
     {_id: '598d7ae7c3148a6d853866e8'}, 
     {_id: '598d7afdc3148a6d853866f4'} 
    ] 
Movies.insertMany(data, function(error, docs) {}); 

这种情况很少发生。

赞赏任何帮助。

谢谢

回答

1

MongoDB不支持事务。因为你的操作是按照默认的顺序进行的,所以MongoDB开始插入文档,直到所有的文档被写入,或者它遇到一个错误(例如,当数据库中已经存在一个_id),在MongoDB将停止插入其他文档。

因此,如果您尝试插入10个文档,并且5个文档发生错误后,前5个文档将被插入,但其余不会。这是记录here

同样的文档还建议如何处理:禁用排序,因为“与ordered [设置]到false,插入操作将继续与任何剩余的文档。

Movies.insertMany(data, { ordered : false }, function(error, docs) { ... }); 
+0

感谢您的回答。我在这里创建问题之前已经阅读了这个。但在我的情况下没有可能导致错误E11000的重复键(_id)。我的目标集合是全新的。 – pcuong

+0

我已经找出问题所在。这是Studio 3T的一个bug。我删除了这个集合,但刷新后,它回来了。 – pcuong

0

我已经找到了问题。这是Studio 3T的一个bug。我删除所有集合,然后导入新的集合,然后刷新集合树。一些丢弃的集合回来了。

相关问题