我正在研究Spring Boot v2.1.3.RELEASE & Spring Data Mongo
。在此示例中,我想在email&deptName上应用唯一性。 email&deptName的组合必须是唯一的,并且由于在每个数组对象中重复发送电子邮件,有没有办法使电子邮件发出?
我在下面尝试过,但是没有用!
@CompoundIndexes({ @CompoundIndex(name = "email_deptName_idx", def = "{'email' : 1, 'technologyEmployeeRef.technologyCd' : 1}") })
样本数据
{ "_id" : ObjectId("5ec507c72d8c2136245d35ce"), .... .... "firstName" : "John", "lastName" : "Doe", "email" : "[email protected]", ..... ..... ..... "technologyEmployeeRef" : [ { "technologyCd" : "[email protected]", "technologyName" : "Advisory", .... ..... "Status" : "A" }, { "technologyCd" : "[email protected]", "technologyName" : "Tax", ..... ..... "Status" : "A" } ], "phoneCodes" : [ "+352" ], .... .... }
Technology.java
@Data @Builder @AllArgsConstructor @NoArgsConstructor @Document public class Technology { @Indexed(name = "technologyCd", unique = true, sparse = true) private String technologyCd; @Indexed(name = "technologyName", unique = true, sparse = true) private String technologyName; private String status; }
EmployeeTechnologyRef.java
@Data @Builder @AllArgsConstructor @NoArgsConstructor public class EmployeeTechnologyRef { private String technologyCd; private String primaryTechnology; private String status; }
Employee.java
@Data @Builder @AllArgsConstructor @NoArgsConstructor @Document @CompoundIndexes({ @CompoundIndex(name="emp_tech_indx", def = "{'employeeTechnologyRefs.primaryTechnology' : 1, 'employeeTechnologyRefs.technologyCd' : 1}" ,unique = true, sparse = true) }) public class Employee { private String firstName; private String lastName; private String email; private List<EmployeeTechnologyRef> employeeTechnologyRefs; }
我使用了下面的代码,但没有给我任何重复的错误。我们该怎么做?
Technology java8 = Technology.builder().technologyCd("Java").technologyName("Java8").status("A").build();
Technology spring = Technology.builder().technologyCd("Spring").technologyName("Spring Boot2").status("A").build();
List<Technology> technologies = new ArrayList<>();
technologies.add(java8);
technologies.add(spring);
technologyRepository.saveAll(technologies);
EmployeeTechnologyRef t1 = EmployeeTechnologyRef.builder().technologyCd("Java").primaryTechnology("Y")
.status("A")
.build();
EmployeeTechnologyRef t2 = EmployeeTechnologyRef.builder().technologyCd("Spring").primaryTechnology("Y")
.status("A")
.build();
List<EmployeeTechnologyRef> employeeTechnologyRefs = new ArrayList<>();
employeeTechnologyRefs.add(t1);
employeeTechnologyRefs.add(t2);
employeeTechnologyRefs.add(t1);
Employee employee = Employee.builder().firstName("John").lastName("Kerr").email("[email protected]")
.employeeTechnologyRefs(employeeTechnologyRefs).build();
employeeRepository.save(employee);
我正在使用Spring Boot v2.1.3.RELEASE和Spring Data Mongo。在此示例中,我想在email&deptName上应用唯一性。 email和deptName的组合必须唯一,并且是...
在MongoDB中,唯一索引可确保一个字段中的特定值不会出现在多个文档中。 not