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
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).
have you tried to drop your collection and try again? usually there are many conflicts while applying new java mapping to existing mongodb collection
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With