Spring Boot Mongo-如何从集合中的其他集合中参考文档



我有办公室对象:

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。

最新更新