Spring Mongodb - 插入嵌套文档?

时间:2017-04-21 21:56:04

标签: java spring mongodb spring-data-mongodb

我有以下课程

@Document
public class PersonWrapper {

    @Id
    private ObjectId _Id;

    @DBRef
    private Person person

    // Getters and setters removed for brevity.
}

public class Person
{
    @Id
    private ObjectId _Id;

    private String name;

    // Getters and setters removed for brevity.
}

而且 - 我有以下MongoReposityClass ......

public interface PersonWrapperRepository extends MongoRepository<Person, String> {
    Person findByPerson_name(String name);
}

显示存储库类可能毫无意义 - 但基本上我在这里做的是创建存储库类的实例,然后创建一个PersonWrapper对象,然后执行以下操作:

repo.insert(personWrapperInstance);

现在,虽然这会有效 - 但我发现我需要首先插入“Person”,然后将返回的对象添加到PersonWrapper,然后再插入一次。

这很好,所有,我相信我可以编写一些流量控制来捕捉错误,并在出现问题时表现得很明智。

但是 - 每个人都知道效率低下,因为这是两次保存调用。有一种方法我可以基本上创建嵌套对象,并在ParentWrapper上执行插入,并且如果它不存在则让mongo插入Person实例,对吗?

我一直用Google搜索,但遇到了一些我想知道的问题。

1 个答案:

答案 0 :(得分:0)

使用spring-data-mongodb无法做到这一点。框架缺乏使用嵌套对象的能力,并且将其放入try catch中的方式几乎是唯一的方法。