我想在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);