0

我想更新已存储在数据库中的记录字段。我怎样才能做到这一点?到目前为止,我遇到的所有示例都使用 Python/Php 或旧版本的 MongoDB (Java),并且 api 不再是最新的。

基本上我想在内存中加载一个具有特定 userId 的对象并更改其用户名值。(我想请您参考下面的代码)

太感谢了

编辑

到目前为止,我有以下代码:

public class UserDAO {
    MongoOperations mongoDb;

    public UserDAO(){
        mongoDb = MongoDBInstanceFactory.getMongoDBinstance();
    }

    public User getUserByUsername(String username){
        Query searchUserQuery = new Query(Criteria.where("username").is(username));
        return mongoDb.findOne(searchUserQuery, User.class);
    }

    public User getUserById(String id){
        Query searchUserQuery = new Query(Criteria.where("id").is(id));
        return mongoDb.findOne(searchUserQuery, User.class);
    }

    public User addUser(String username){
        mongoDb.save(new User(username));
        return getUserByUsername(username);
    }
}

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

    public User(String username) {
        this.username = username;
    }

    public User() {
    }
    @Id
    private String id;
    private String username;

    //getter, setter, toString, Constructors
    /**
     * @return the id
     */
    public String getId() {
        return id;
    }

    /**
     * @return the username
     */
    public String getUsername() {
        return username;
    }
}

@RequestMapping(value = "/registerUser")
public @ResponseBody
String registerUser(@RequestParam(value = "username") String username, HttpServletResponse response) throws IOException {

sb = new StringBuilder();

user = userDao.getUserByUsername(username);

if (user == null) {
    user = userDao.addUser(username);
    userQueryPhaseDao.addUserQueryPhase(user.getId(), null, "0");
    sb.append("1|").append(user.getId());
    response.addCookie(new Cookie("userId", user.getId()));
} else {
    sb.append("0|User with that handle already exists!");
}

return sb.toString();
}

感谢您的时间

4

1 回答 1

1

要更改现有文档,请使用 方法DBCollection.update

该方法有两个参数。

第一个参数告诉 MongoDB 要更新哪个文档。find它的工作原理与or完全相同findOne

第二个是文档将被替换的文档。当您只想更新单个字段而不是替换整个文档时,您需要使用$setoperator

于 2013-11-09T12:12:30.787 回答