当我使用insert(docs ...)插入多个文档时,如果文档列表中存在一个文档中的重复键,操作将失败并且无法插入文档。如何忽略此错误,因此可以成功插入所有文档,但不能插入重复文档。
最佳答案
默认情况下,当您使用MongoDB的.insertMany()
或类似方法插入文档时,将按顺序插入{ ordered: true }
,如果在将文档插入文档数组中时出现错误,则整个操作将因不插入该特定文档而失败,并在此之后其余其他操作而失败一。因此,要使此过程无序,您需要将一个选项传递给.insertMany()
到{ ordered: false }
。
引用: MongoDB-insertMany-Unordered-inserts
因此,当涉及到 mgo 驱动程序时,您可能需要使用func (b *Bulk) Unordered()
。
引用: mgo-Unordered
注意:最好的选择是检查如果数据库上有多个唯一键约束并且对文档或字段上的唯一索引进行更正而不是跳过文档,则检查为什么发生重复键错误以及哪个键导致此问题从插入。
关于mongodb - 在使用MongoDB-mgo插入许多文档的同时,如何忽略重复的键错误并继续插入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60482245/