我需要使用Java在MongoDB中保存两个集合。其中一个集合是 部门 ,另一个集合是 雇员 。一个部门可以有很多员工的地方,我想保存一个集合,例如必须将员工唯一ID映射到我的部门员工列表中。
例:
{ "_id" : ObjectId("598da19250aa4ad2413d4bc0"), "_class" : "com.department", "departmentName" : "SAQ-A", "departmentNumber" : "3_2", "employee" : [ "id" : "1", "id" : "2", "id" : "3" ] }
我可以知道使用Java在MongoDB中实现它的方式是什么吗?
通过提供的文档和标签,我假设您正在使用spring数据来处理mongodb。因此,在这里您可能要使用DBRef将员工绑定到部门中。幸运的是,Spring Data为您提供了@DBRef注释。
员工类别:
import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; @Document public class Employee { @Id private Integer id; ... }
部门课:
import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.DBRef; import org.springframework.data.mongodb.core.mapping.Document; @Document public class Department { @Id private String id; @DBRef private Collection<Employee> employees; ... }
MongoDB文件:
{ "_id" : ObjectId("598dc04ac4fdd0e29867ccbb"), "_class" : "foo.bar.Department", "employees" : [ { "$ref" : "employee", "$id" : 1 }, { "$ref" : "employee", "$id" : 2 } ] }
注意: 员工实例必须已经存在于MongoDB中。DBRef不会以层叠样式保存雇员。看看这篇关于级联的文章。