2017-08-11 55 views
1

我需要使用java在MongoDB中保存兩個集合。其中一個集合是等收集員工。如果一個部門可以有很多員工,我想保存一個員工集合,例如員工唯一ID必須映射到我的部門員工列表中。使用java外鍵的MongoDb

例子:

{ 
    "_id" : ObjectId("598da19250aa4ad2413d4bc0"), 
    "_class" : "com.department", 
    "departmentName" : "SAQ-A", 
    "departmentNumber" : "3_2", 
    "employee" : [ 
      "id" : "1", 
      "id" : "2", 
      "id" : "3" 
    ] 
} 

我能知道什麼是我可以用java實現它在MongoDB中的方式嗎?

回答

2

通過所提供的文件和標籤我假設你正在使用的彈簧數據處理的MongoDB。因此,您可能希望使用DBRefs將員工綁定到部門。幸運的是Spring Data給你@DBRef註釋。

Employee類:

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 
     } 
    ] 
} 

注: Employee實例必須在MongoDB中已經存在。 DBRef不會以級聯方式保存員工。看看這篇關於cascading的文章。