0

У меня есть один класс пользователей, как это:обновление MongoDB документа с помощью Java объект

@Document(collection = "users") 
public class User { 

    @Id 
    private String id; 

    String username; 

    String password; 

    String description; 

    public String getId() { 
     return id; 
    } 

    public void setId(String id) { 
     this.id = id; 
    } 

    public String getUsername() { 
     return username; 
    } 

    public void setUsername(String username) { 
     this.username = username; 
    } 

    public String getPassword() { 
     return password; 
    } 

    public void setPassword(String password) { 
     this.password = password; 
    } 

    public String getDescription() { 
     return description; 
    } 

    public void setDescription(String description) { 
     this.description = description; 
    } 

    @Override 
    public String toString() { 
     return "User[id=" + id + ", username=" + username + ", password=" + password + ", description" 
       + description + "]"; 
    } 

} 

Я способен выполнять ограниченное обновление. Как:

Query searchQuery = new Query(Criteria.where("id").is("shashi")); 
     mongoDBClient.updateFirst(searchQuery, Update.update("password", "newpassword"), User.class); 

Теперь, если я хочу, чтобы обновить отдых других полей (username and description) из User класса, нужно вызвать метод updateFirst так много раз.

Я хочу избежать этого и передать весь объект методу updateFirst. Что-то вроде:

mongoDBClient.updateFirst(searchQuery, Update.update(userObject), User.class); 

В принципе, я хочу редактировать все/несколько полей одним вызовом с помощью java POJO-объекта. Как я могу это достичь?

ответ

0

Редактировать/Все несколько полей в одном вызове с использованием объекта Java POJO, может быть сделано, как показано ниже

1) запрос, документ, который нужно обновить -> мы получаем объект Java

2) Выполните все изменения в объект Java

3) Сохранить объект

Код:

Query query = new Query(); 
query.addCriteria(Criteria.where("id").is("shashi")); 
User user = mongoOperation.findOne(query, User.class); 
//modify the user object with the properties need to be updated 
//Modify password and other fields 

user.setPassword("newpassword"); 
user.setDescription("new description"); 
user.setUsername("NewUserName"); 
//save the modified object 
mongoOperation.save(user); 
Смежные вопросы