Мне интересно, что я пытаюсь обновить одно или два свойства документа из коллекции user
, имеющей какое-то свойство такие как
{
"id": "591fcd33f8bb03598ec34f70",
"name": null,
"username": "abc",
"emailId": "[email protected]",
"interestedFlag": 1,
"mobNo": "xxxxxxxxxx",
"userActiveFlag": 1,
"address": "1",
"city": "abx",
"state": "up",
"profileImage": [
{}
],
"joinedOn": null,
"modifiedOn": null,
"lastVisited": null,
"tempPassword": "1234567",
"sex": null,
"metaDataMap": {},
"dob": null
}
Предположим, я хочу обновить только user
имя и запускаю save
с помощью следующей команды:
userRepository.save(userEntity);
Он изменил моего пользователя как:
{
"id": "591fcd33f8bb03598ec34f70",
"name": "New Name",
"username": null,
"emailId": null,
"interestedFlag": null,
"mobNo": null,
"userActiveFlag": null,
"address": null,
"city": null,
"state": null,
"profileImage": null,
"joinedOn": null,
"modifiedOn": null,
"lastVisited": null,
"tempPassword": null,
"sex": null,
"metaDataMap": {},
"dob": null
}
Но в идеале я хочу изменить только свое имя пользователя .
Мой пользовательский контроллер:
@PATCH
@Path("/changepassword/{userId}")
@Consumes("application/json")
public User changeName(@PathParam("userId") String userId, final User user) {
userService.changePassword(user);
return user;
}
Мой serviceImpl:
@Override
public User changeName(User user){
User userEntity = userRepository.findById(user.getId());
userEntity.setName(user.getName());
return userRepository.save(userEntity);
}
Мой mongoRepository:
public interface UserRepository extends MongoRepository<User, String>
Пожалуйста, помогите мне правильно добиться этого с помощью Spring-data-mongodb .