所以我将MongoDB java驱动程序升级到2.12.4,其中ensureIndex()
方法已被弃用。相反,我使用createIndex()
方法从文档看起来与ensureIndex()
类似。但是,当我在生产中使用此方法时,我收到以下错误 -
{ "serverUsed" : "X.X.X.X" , "ok" : 0.0 , "errmsg" : "Index with name: <index_name> already exists with different options" , "code" : 85}
为什么会这样?任何人都可以帮我解决这个问题吗?
由于
答案 0 :(得分:8)
在创建新索引之前尝试删除当前索引。
如果您担心这些索引的生产停机时间等,您可以:
答案 1 :(得分:5)
Shaver的答案是否非常好,但实际上并未解决gravetii强调的问题。
如果您尝试在相同的字段上创建索引,具有相同的顺序但具有不同的选项,则 createIndex
将失败并显示此错误。这是因为索引选项可能导致索引具有非常不同的属性。当您考虑具有unique
标志的索引时,这是显而易见的。
如果您使用相同的字段,相同的顺序和相同的选项调用createIndex
,它将按预期运行;不对集合的索引进行任何更改,也不会抛出异常。