更新:这个问题是关于 MongoDB 1.8.x 提出的,接受的解决方案适用于 1.8。但请注意,Mongo 2.x 对错误消息进行了更改,以便您可以知道哪些字段在更新和插入时生成错误(请参阅下面来自 Kyle 和 Remon 的评论)。
有没有一种方法可以尝试 Mongo upsert,并且如果存在唯一索引违规,则知道哪个字段导致问题 - 所有这些都在一个数据库操作中?
例如,假设我有一个具有和属性customers的集合。另外,假设存在唯一索引,以确保没有两个文档具有相同的._idnamenamecustomername
目前,我执行两个数据库操作来执行更新插入:
customers以查看是否已存在具有我要插入/更新的名称的文档。我希望能够在单个操作中完成此操作,并且如果出现错误,知道哪个字段导致了问题。
如果操作是创建新文档,这是可能的。蒙戈返回错误E11000 duplicate key error index: {index name}。这有点麻烦,但我可以使用正则表达式来解析索引名称(在我的例子中,其中包含字段名称)。
但是,更新文档时,错误消息没有有关索引或字段的信息。简直就是“ E11001 duplicate key on update”。
有没有其他人有关于执行更新插入的智能方法的建议,并了解哪些字段导致唯一索引问题(如有必要)?希望避免服务器端存储 JavaScript 函数......
| 归档时间: |
|
| 查看次数: |
2564 次 |
| 最近记录: |