【问题标题】:Spring Boot - MongoDB Multiplefield uniqueSpring Boot - MongoDB 多字段唯一
【发布时间】:2018-02-07 20:24:11
【问题描述】:

我有这样的问题。 "name""lastname" 字段不是唯一的。但是名字+姓氏我想是独一无二的。所以同一个“name”可以有多个,或者同一个“lastname”可以有多个,但我只想有一个“name + lastname”。

例如:

在数据库中注册:

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
}

【问题讨论】:

    标签: mongodb spring-boot spring-data spring-data-jpa


    【解决方案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 }"
       }
    

    【讨论】:

    • @CompoundIndex(name = "name_lastName_idx", def = "{'name' : 1, 'lastName' : 1}", unique = true) ty 寻求帮助。我使用这个注释创建索引。
    猜你喜欢
    • 2021-10-20
    • 2020-12-10
    • 1970-01-01
    • 2016-01-18
    • 2021-12-10
    • 2012-09-05
    • 2020-09-13
    • 2019-10-05
    • 2015-11-16
    相关资源
    最近更新 更多