我有Office对象:
class Office{
String address;
int employees;
String city;
String State;
---- lot of other fields
}
我有mongo
集合的Office类,让我们说100个Office文档由上述Office类表示。
然后是Employee类:
class Employee{
String firstName;
String lastName;
Office office;
-----other fields
}
在mongo集合中对于Employee类我如何防止Office对象被复制为每个Employee条目。
在spring-boot mongodb
中,有没有方法可以引用Office集合来表示Employee的Office对象,而不是在mongo db中为每个员工复制它。我希望我已经解释了我的问题。
先谢谢你。
4条答案
按热度按时间cgh8pdjw1#
您可以在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-referencesxiozqbni2#
下面是您可以使用的代码:
sbdsn5lh3#
以您的示例为基础:
9nvpjoqh4#
MongoBD中有两种类型的引用:实际上,the official documentation建议在几乎所有情况下都使用手动引用。
使用DBRef的情况:
否则,请使用手动参考。
Spring Data MongoDB从3.3版本开始支持这两种类型的引用,当时引入了annotation @DocumentReference。