MongoDB One-to-Many 和 Many-to-One 关系
MongoDB One-to-Many and Many-to-One relations
我正在尝试优化我的 MongoDB collection。这是示例:
@Document
class Article {
@Id
private String id;
@DBRef(lazy = true)
@CascadeSave
private List<Comment> comments;
private String title;
private String text;
// constructors, getters and setters are ommited
}
@Document
class Comment {
@Id
private String id;
private String text;
private String author;
// constructors, getters and setters are ommited
}
看起来很简单。得到文章,然后得到这篇文章的所有评论。但是,如果我已经有了文章 ID,并且只想获取我的文章的所有评论怎么办?当然也很简单。每条评论都应该引用它所属的文章(例如 article_id)。
我的问题是如何自动完成?如何在 saving/updating 等时将 article_id 插入评论?或者我应该将字段添加到 Comment class,而不是先保存文章,然后获取 article_id,然后获取评论,添加 article_id,保存评论并将评论添加到文章评论 collection?这对我来说毫无意义。
我正在使用 Java 10,Spring Boot 2.0.5 包括 spring-data-mongodb 和响应式驱动程序。我还实现了@CascadeSave 注释,用于在保存文章时保存评论。
感谢您的回复。
您设计的模式是基于关系的设计。在 Mongo 中,您应该尽可能避免引用,因为在您的用例中,您可以在文章中嵌入评论列表。
要在文章中保存评论,您可以使用 spring-data-mongo
.
中也可用的 $push
功能
我正在尝试优化我的 MongoDB collection。这是示例:
@Document
class Article {
@Id
private String id;
@DBRef(lazy = true)
@CascadeSave
private List<Comment> comments;
private String title;
private String text;
// constructors, getters and setters are ommited
}
@Document
class Comment {
@Id
private String id;
private String text;
private String author;
// constructors, getters and setters are ommited
}
看起来很简单。得到文章,然后得到这篇文章的所有评论。但是,如果我已经有了文章 ID,并且只想获取我的文章的所有评论怎么办?当然也很简单。每条评论都应该引用它所属的文章(例如 article_id)。
我的问题是如何自动完成?如何在 saving/updating 等时将 article_id 插入评论?或者我应该将字段添加到 Comment class,而不是先保存文章,然后获取 article_id,然后获取评论,添加 article_id,保存评论并将评论添加到文章评论 collection?这对我来说毫无意义。
我正在使用 Java 10,Spring Boot 2.0.5 包括 spring-data-mongodb 和响应式驱动程序。我还实现了@CascadeSave 注释,用于在保存文章时保存评论。
感谢您的回复。
您设计的模式是基于关系的设计。在 Mongo 中,您应该尽可能避免引用,因为在您的用例中,您可以在文章中嵌入评论列表。
要在文章中保存评论,您可以使用 spring-data-mongo
.
$push
功能