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 功能