我有办公室对象:
class Office{
String address;
int employees;
String city;
String State;
---- lot of other fields
}
我有办公室课程的mongo
收集,可以说100个由上述办公室代表的办公室文件。
然后我有员工班:
class Employee{
String firstName;
String lastName;
Office office;
-----other fields
}
在Mongo Collection for Employee Class中,我如何防止为每个员工入境复制办公室对象。
在spring-boot mongodb
中,我可以参考办公室收集以表示员工的办公室对象,而不是为Mongo DB中的每个员工复制它。我希望我已经解释了我的问题。
预先感谢。
您可以在mongo中使用dbref。春季数据为此带来注释:
@DBRef
但是,请小心,MongoDB是面向文档的NOSQL,是将内容嵌入文档中的好习惯。这种方法可能会导致您遇到更大的问题。
编辑:
这样使用@DBRef
:https://docs.spring.io/spring-data/data-mongo/docs/1.7.0.release/referene/reference/html/#mapping-usage-usage-usage-references
这是您可以使用的代码:
@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
}
使用您的示例作为基础:
@Document
class Employee {
private String firstName;
private String lastName;
@DBRef
private Office office;
/* other fields */
}
在蒙古德(Mongobd)中有两种类型的参考:手动参考和dbrefs。实际上,官方文档建议几乎每种情况使用手动参考。
使用dbrefs的情况:
- 您需要从多个收藏中参考文档
- 您需要从另一个数据库参考文档
否则使用手动参考。
Spring Data MongoDB支持两种类型的参考文献,因为第3.3版@documentReference @documentReference。