我有Office对象:
class Office{
String address;
int employees;
String city;
String State;
---- lot of other fields
}
我拥有Office类的mongo
个集合,可以说上面是Office类所代表的100个Office文档。
然后我有Employee类:
class Employee{
String firstName;
String lastName;
Office office;
-----other fields
}
在Employee类的mongo集合中,我如何防止为每个Employee条目复制Office对象。
在spring-boot mongodb
中,我可以使用Office集合来表示Employee的Office对象,而不是为mongo db中的每个员工复制它。我希望我已经解释了我的问题。
提前致谢。
答案 0 :(得分:1)
您可以在Mongo中使用DBRef。 Spring Data为此提供了注释:
@DBRef
但是,要小心,MongoDB是一个面向文档的NoSQL,并且是将内容嵌入到文档中的好习惯。这种方法可能会导致更大的问题。
修改强>
像这样使用@DBRef
:
https://docs.spring.io/spring-data/data-mongo/docs/1.7.0.RELEASE/reference/html/#mapping-usage-references
答案 1 :(得分: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
}
答案 2 :(得分:0)
以您的示例为基础:
@Document
class Employee {
private String firstName;
private String lastName;
@DBRef
private Office office;
/* other fields */
}