6

у меня есть mongodb коллекция term со следующей структуройMongoException: Индекс с именем: код уже существует с различными вариантами

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

и класс Java, представляющий термин коллекции как 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 
} 

У меня есть много документов в коллекции term. Теперь я добавил новое поле Term.java в

@Indexed 
protected String status; 

После добавления поля status к Term.java, при вставке нового термина для term коллекции я получаю в exceptoin:

com.mongodb.MongoException Индекс с именем: код уже существует различных вариантов

Я использую MongoDB версии: 2.6.5 и весна-данных-MongoDB VERSI на: 1.3.2

ответ

6

У вас уже есть индекс в этой коллекции с тем же именем, но с другим определением. Я думаю, что ваш текущий индекс код не является уникальным

попробовать: db.Term.getIndexes()

Если это действительно так (у вас есть не уникальный индекс по полю кода), вопрос: db.Term.dropIndex("code_1") (замените с именем индекса поля кода).

В следующий раз, когда вы загружаете приложение, оно должно работать нормально.

В качестве альтернативы удалите уникальный атрибут из аннотации @Indexed (если вы не исключаете его уникальность).

+0

Ваша догадка правильная. Выбросил индекс на код и удалил дубликаты из кода, а затем перезапустил приложение, исправив проблему. Спасибо! – faizi

+0

Я отказался от версии моей библиотеки Ruby MongoDB, и вдруг все мои индексы с «expireAfterSeconds» уже существовали с разными вариантами, поэтому мне пришлось их всех бросить. – Hubro

0

Вы пытались бросить свою коллекцию и попробовать еще раз? обычно возникает много конфликтов при применении нового java-сопоставления к существующей коллекции mongodb.

+0

В производстве? :) – ruX