2017-08-30 51 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