Spring boot mongo - 如何从集合中引用其他集合中的文档

时间:2017-12-14 00:00:54

标签: mongodb spring-boot

我有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中的每个员工复制它。我希望我已经解释了我的问题。

提前致谢。

3 个答案:

答案 0 :(得分:1)

您可以在Mongo中使用DBRef。 Spring Data为此提供了注释:

@DBRef

但是,要小心,MongoDB是一个面向文档的NoSQL,并且是将内容嵌入到文档中的好习惯。这种方法可能会导致更大的问题。

修改

像这样使用@DBRefhttps://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 */
}