6

我有一個mongodb集合term用以下結構MongoException:指數名稱爲:代碼已經使用不同的選項

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

和存在代表術語集合作爲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 
} 

我有一個Java類許多文件在term集合中。現在我添加一個新的領域Term.java作爲

@Indexed 
protected String status; 

加場statusTerm.java後,同時插入一個新的名詞來term收集我正在一個的exceptoin:

com.mongodb.MongoException :索引名稱:代碼已存在與 不同的選項

我使用MongoDB版本:2.6.5和spring-data-mongodb版本on: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

相關問題