2017-12-14 19 views
2

から他のコレクション内のドキュメントを参照するためにはどのようにOfficeオブジェクトを持っている:春ブーツMongoのコレクション

class Office{ 
    String address; 
    int employees; 
    String city; 
    String State; 
    ---- lot of other fields 
} 

私は持っているが、上記のOfficeクラスによって表される100のOfficeドキュメントを言うことができますオフィスクラスのmongoのコレクションを持っています。私は、各従業員のエントリにコピーするOfficeオブジェクトを防ぐことができますどのようにEmployeeクラスのためにMongoのコレクションで

class Employee{ 
    String firstName; 
    String lastName; 
    Office office; 
    -----other fields 
} 

それから私は、Employeeクラスを持っています。

spring-boot mongodbには、mongo dbの各従業員にコピーするのではなく、従業員のOfficeオブジェクトを表すOfficeコレクションを参照する方法があります。私は私の問題を説明したことを願っています。

ありがとうございます。

答えて

1

MongoではDBRefを使用できます。春データは、そのための注釈ます:

@DBRef

しかし、注意してくださいし、MongoDBは、ドキュメント指向のNoSQLで、ドキュメント内のものを埋め込むことをお勧めします。このアプローチは、より大きな問題につながる可能性があります。

編集:

はこのよう@DBRefを使用します。ここでは https://docs.spring.io/spring-data/data-mongo/docs/1.7.0.RELEASE/reference/html/#mapping-usage-references

0

は、使用できるコードです:

@Document(collection="person") 
public class Person 
{ 

     @Id 
     private Long personId; 

     private String name; 

     private int age; 

     @DBRef(db="address") 
     private List<Address> addresses = new ArrayList<Address>(); 

//other getters and setters 

}