MongoDB中引用
问题描述:
很抱歉,但我很新手的MongoDB和Spring数据和我有一个关于这两类问题:MongoDB中引用
@Document(collection = "person")
public class Person {
/**
*
*/
private static final long serialVersionUID = 6268875544266598239L;
@Id
private String Id;
private String name;
//@DBRef(db = "mail")
ArrayList<Mail> mails = new ArrayList<Mail>();
,另一种是:
@Document(collection = "mail")
public class Mail {
/**
*
*/
private static final long serialVersionUID = 9149555841222037638L;
@Id
private String Id;
private String mail;
Person person;
威尔在这种情况下,我在引用时遇到问题?我的意思是我需要将@DBref
或@Reference
或任何其他注释与中的@ManyToOne
注释一起使用吗?我看到很多例子,但我不明白这一点是否没有任何注释工作?
答
如果没有注释,它将在person
文档中内联保存mail
对象。 Viceversa的注释会将mail
DBRefs保存在person
文件中。
例子:
-
person
文档,而无需@DBRef
在:{"id":"foo", "name":"bar", "mails":[{"id":"abc", "mail":"hello"},{"id":"def","mail":"world"}]}
-
person
与@DBRef
文件:{"id":"foo", "name":"bar", "mails":[{"$ref":"mail","$id":"abc"},{"$ref":"mail","$id":"def"}]}
这意味着,如果你需要person
和mail
收藏你应该保持一致在这里使用@DBRef
情况下,它的行为就像JPA上下文中的@OneToMany
批注。
但是如果你需要99%的情况下两个文档之间的关系,你需要一个关系dbms而不是mongo。