mongodb - 在使用MongoDB-mgo插入许多文档的同时,如何忽略重复的键错误并继续插入?

标签 mongodb go mongodb-query mgo

当我使用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/

相关文章:

c++ - 新的 C++ Mongo 驱动程序 : how to see type and how to get string value

javascript - mongoose findOneAndUpdate 仅附加对象

go - 当资源超过周围函数的范围时,如何推迟资源清理?

java - Hadoop MongoConfigUtil查询限制

json - util.inspect/JSON.stringify 不适用于对象中的数组

mongodb - 如何为 "date"创建索引?

go - 在 Golang 中使用 reflect 将指向通过 interface{} 传入的结构的指针设置为 nil?

git - Golang Webapp 种子设置失败

c# - Mongodb项目日期从数值(DateTimeOffset)

mongodb - 将数组内容过滤为包含 $concatArrays 的查询