【发布时间】:2016-12-15 16:56:36
【问题描述】:
我有以下代码:
db.foo.insert([{_pos:1,b:12},{_pos:2,a:23},{_pos:3,c:12}])
db.foo.createIndex( { "_pos" : 1 }, { unique: true } )
db.foo.update({}, { "$inc" : {"_pos" : 1} }, { multi : true })
最后一行给了我以下错误:
E11000 重复键错误索引:JsonTableTemp.foo.$_pos_1 重复键:{ : 2.0 }
将$isolated 添加到查询中没有帮助。
如何在不先删除索引的情况下增加 _pos 字段?
我使用 mongodb 3.2.6
【问题讨论】:
-
我刚试过这个,createIndex 为我抛出了错误。当我从第二行删除 { unique: true } 时,更新实际上运行良好。
-
@dyouberg:为什么 createIndex 失败了?你用的是哪个mongodb版本?
-
Mongo 版本 3.2.0 > db.foo.createIndex( { "_pos" : 1 }, { unique: true } ) { "ok" : 0, "errmsg" : "E11000 重复密钥错误集合:test.foo 索引:_pos_1 复制键:{ : 1.0 }", "code" : 11000 }
-
这怎么可能?你确定你的集合是空的并且真的只包含 3 个文档吗?
-
嗯,你是对的,我想我复制粘贴了第一行两次。我有 6 个条目。我刚刚又试了一次,得到了和你一样的结果。让我仔细看看。
标签: mongodb