mongodb - Spring Boot - MongoDB Multiplefield 独特

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

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

例如:

在数据库中注册:

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

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

当我想记录上面的记录时,我希望它

record successfully

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

当我想记录上面的记录时,我希望它

record successfully

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

但是由于这里的名字和姓氏相同,

give me an error!

如何才能做到呢?如何在实体中创建解决方案? 我的问题有点可笑,但我需要解决它。

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
}

最佳答案

如果您创建 unique indexname,lastName 上,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 }"
   }

关于mongodb - Spring Boot - MongoDB Multiplefield 独特,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45955028/

相关文章:

java - 在不重启服务器的情况下动态重新加载 Spring Mongo 数据库连接

java - 在 mongoDB 中创建唯一索引

c++ - MongoDB 和 Visual C++ 2008 链接器错误

java - 为 Spring Boot 应用程序启用 RC4 密码套件

java - Spring Boot Whitelabel 错误页面(类型=未找到,状态=404)

java - 与 Spring Data JPA 相比,使用 Spring Data REST 有哪些优势?

jpa - 在 WHERE 中使用 "CASE WHEN"语句进行查询会导致 QuerySyntaxException : unexpected AST

php - 从 mySQL 切换到 noSQL - 词典网站

mongodb - GitHub 操作无法连接到 MongoDB 服务

java - 如何在 WebRequest 中获取客户端的远程地址