6

Ich habe eine mongodb Sammlung term mit Struktur folgendenMongoException: Index mit dem Namen: Code existiert bereits mit verschiedenen Optionen

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

und eine Java-Klasse, die den Begriff Sammlung als 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 
} 

Ich habe viele Dokumente in term Sammlung. Jetzt ein neues Feld Term.java als

@Indexed 
protected String status; 

Nach der Zugabe von Feld status-Term.java, während das Einfügen eines neuen Begriffs zu term Sammlung Ich erhalte eine die exceptoin ich hinzugefügt:

com.mongodb.MongoException : Index mit dem Namen: Code existiert bereits mit verschiedenen Optionen

I MongoDB Version bin mit: 2.6.5 und Feder-data-mongodb versi ein: 1.3.2

Antwort

6

Sie haben bereits einen Index für diese Sammlung mit dem gleichen Namen, aber mit einer anderen Definition. Meine Vermutung ist, dass die aktuelle Code-Index ist nicht eindeutig

try: db.Term.getIndexes()

Wenn dies tatsächlich der Fall ist (Sie haben einen nicht eindeutigen Index über Codefeld), Ausgabe: db.Term.dropIndex("code_1") (ersetzen mit dem Code Feld Index Name).

Das nächste Mal, wenn Sie Ihre Anwendung booten, sollte es in Ordnung funktionieren.

Alternativ entfernen Sie das eindeutige Attribut aus der @Indexed Annotation (wenn Sie es nicht als einzigartig ausschließen).

+0

Ihre Vermutung ist richtig. Hat den Index für den Code gelöscht und die Duplikate aus dem Code entfernt. Anschließend wurde das Problem durch einen Neustart der Anwendung behoben. Danke :) – faizi

+0

Ich habe die Version meiner Ruby MongoDB-Bibliothek heruntergestuft, und plötzlich existierten alle meine Indizes mit "expireAfterSeconds" bereits mit verschiedenen Optionen, also musste ich sie alle fallen lassen. – Hubro

0

Haben Sie versucht, Ihre Sammlung zu löschen und es erneut zu versuchen? In der Regel gibt es viele Konflikte beim Anwenden neuer Java Mapping auf vorhandene Mongodb-Sammlung

+0

In Produktion? :) – ruX