【发布时间】:2019-02-03 08:46:44
【问题描述】:
我在 Mongo Sharded Cluster(MSC) 中遇到了重复密钥错误,使用 Mongo 副本集时不会发生这种错误。
我在客户端应用中有简单的操作:
// pseudocode - email is unique key
subscriber = db.newsletter.find({email: "john@smith.com"})
if (subscriber == null) {
db.newsletter.insert({email: "john@smith.com", name: "John"})
} else {
db.newsletter.update({email: "john@smith.com"}, {name: "John"})
}
我没有将它包含在上面的代码中,但我需要检索文档的 _id,因此不能使用 upsert。
错误: 如果上述过程对同一封新电子邮件执行两次,则会导致重复密钥错误。第二次迭代将无法找到订阅者,因此它将尝试插入,尽管文档已经存在于集合中。
据我所知,运行上述客户端的单个实例不应导致重复键错误,但确实如此。
【问题讨论】:
标签: mongodb distributed