【问题标题】:update mongodb document using java object使用 java 对象更新 mongodb 文档
【发布时间】:2016-06-14 14:36:04
【问题描述】:

我有一个这样的用户类:

@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);

现在如果我想更新User类的其他字段(username and description),我需要多次调用updateFirst方法。

我想避免这种情况并将整个对象传递给updateFirst 方法。比如:

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

基本上,我想使用 java POJO 对象在一次调用中编辑所有/多个字段。我怎样才能做到这一点?

【问题讨论】:

    标签: mongodb spring-data-mongodb mongodb-java


    【解决方案1】:

    使用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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-13
      • 1970-01-01
      • 1970-01-01
      • 2020-11-14
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      相关资源
      最近更新 更多