MongoException: Index with name: code already exists with different options

风流意气都作罢 提交于 2019-12-08 16:13:28

问题


I have a mongodb collection term with following structure

{
    "_id" : "00002c34-a4ca-42ee-b242-e9bab8e3a01f",
    "terminologyClass" : "USER",
    "code" : "X67",
    "terminology" : "some term related notes",
    "notes" : "some notes"
}

and a java class representing the term collection as Term.java

@Document
public class Term{  

    @Id
    protected String termId;

    @Indexed
    protected String terminologyClass;

    @Indexed(unique=true)
    protected String code;

    @Indexed
    protected String terminology;

    protected String notes;

    //getters & setters
}

I have many documents in term collection. Now I am added a new field to Term.java as

@Indexed
protected String status;

After adding field status to Term.java, while inserting a new term to term collection I am getting an the exceptoin :

com.mongodb.MongoException: Index with name: code already exists with different options

I am using MongoDB version : 2.6.5 and spring-data-mongodb version : 1.3.2


回答1:


You already have an index on that collection with the same name, but with a different definition. My guess is that your current code index is non-unique

try: db.Term.getIndexes()

If this is indeed the case (you have a non-unique index over code field), issue: db.Term.dropIndex("code_1") (replace with the code field index name).

Next time you boot your application, it's supposed to work alright.

Alternatively, remove the unique attribute from the @Indexed annotation (if you don't except it to be unique).




回答2:


have you tried to drop your collection and try again? usually there are many conflicts while applying new java mapping to existing mongodb collection



来源:https://stackoverflow.com/questions/30232081/mongoexception-index-with-name-code-already-exists-with-different-options

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!