在MongoDB中为Spring数据存储库编写自定义删除/更新/创建查询

时间:2019-07-12 07:46:59

标签: mongodb spring-boot mongodb-query spring-repositories

我想在MongoDB中为Spring数据存储库编写CRUD操作的自定义查询。我设法编写了读取查询:

@Query(value = "{ _id: ?0 }", fields = "{ personalData: 1 }")
Optional<ProfileDocument> findPersonalDataByProfileId(String profileId);

但是我不知道如何执行删除,更新和创建操作。

当前,我正在服务中执行以下操作(以更新个人资料文档中的个人数据):

public ProfilePersonalDataDto updatePersonalData(ProfilePersonalDataDto dto, String profileId) {
    Update update = new Update();
    update.set("personalData", dto);
    UpdateResult updateResult = mongoTemplate.updateFirst(
        query(where("_id").is(profileId)),
        update,
        ProfileDocument.class
    );
    if (updateResult.getMatchedCount() == 0) {
        throw new CvGeneratorException(ErrorCode.PROFILE_NOT_FOUND);
    }
    return dto;
}

我想知道如何使用自定义查询在ProfileDocument中删除,更新和插入ProfilePersonalDataDocument。

个人资料文件如下:

{
    id: "123",
    personalData: {
        id: "123ew",
        name: "test test",
        age: "20"
    },
    languages: [],
    skills: []
}

我想写这样的东西:

@Query(value = "updateQuery")
Optional<ProfileCareerDocument> updateCareer(String profileId, ProfilePersonalDataDocument newDocument);

@Query(value = "deleteQuery")
Optional<ProfileDocument> deleteCareerById(String profileId, String personalDataId);

@Query(value = "insertQuery")
Optional<ProfileDocument> addCareer(String profileId, ProfilePersonalDataDocument newDocument);

0 个答案:

没有答案