So I am upgrading the MongoDB java driver to 2.12.4 where the ensureIndex()
method has been deprecated. I am instead using the createIndex()
method which from the docs seems like to funciton similarly to ensureIndex()
. However, when I use this method in production, I get the following error -
{ "serverUsed" : "X.X.X.X" , "ok" : 0.0 , "errmsg" : "Index with name: <index_name> already exists with different options" , "code" : 85}
Why does this happen? Could anyone help me out with this?
Thanks
Will Shaver's answer is very good, however doesn't actually address the issue the gravetii is highlighting.
createIndex
will fail with this error if you are trying to create an index on the same fields, with the same order, but with different options. This is because the indexes options may cause the index have very different properties. This is obvious when you consider an index with theunique
flag.If you call
createIndex
with the same fields, the same order, and the same options, it will behave as you expect; making no change to the collection's indexes, and it will not throw an exception.Try removing your current indexes before you create the new ones.
If you're worried about production downtime etc for these indexes, you could: