2017-08-30 75 views
0

我有這樣的問題。 "name""lastname"字段不是單獨唯一的。但名字+姓氏我想要是獨一無二的。所以同一個「名字」可以多於一個,或者同一個「姓氏」可以多於一個,但我只想要一個「名字+姓氏」。Spring Boot - MongoDB Multiplefield unique

例如:

在數據庫中註冊:

Name: "Erdem" lastName: "ÖZDEMİR" 

Name: "Erdem" lastName: "AYDEMİR" 

當我想記錄上面記錄着,我希望它

記錄成功

Name: "Ahmet" lastName: "ÖZDEMİR" 

當我想記錄上面記錄着,我希望它

記錄成功

Name: "Erdem" lastName: "ÖZDEMİR" 

但因爲它是相同的名字和姓氏在這裏,

給我一個錯誤

怎麼辦?如何在實體中創建解決方案? 我的問題有點荒謬,但我需要照顧它。

Contact.java

@Document(collection = "contact") 
public class Contact implements Serializable { 

    @Id 
    private String id; 
    private String name; 
    private String lastName; 
    private List<String> phones; 

//get & set 
} 

回答

1

如果你創建一個name, lastName然後unique index MongoDB的將拒絕任何其違反該唯一寫入。

例如:

db.collection.createIndex({ "name": 1, "lastName": 1 }, { unique: true }) 

如果你的唯一索引被破壞的MongoDB將返回一個像這樣的WriteError:

"writeError" : { 
     "code" : 11000, 
     "errmsg" : "E11000 duplicate key error index: test.collection.$a.b_1 dup key: { : null }" 
    } 
+0

'@CompoundIndex(NAME = 「name_lastName_idx」,DEF =「{'名':1,'lastName':1}「,unique = true)'ty幫助。我使用這個annatation創建索引。 – forguta