Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB Java-更新记录中的字段_Mongodb_Spring Mvc - Fatal编程技术网

MongoDB Java-更新记录中的字段

MongoDB Java-更新记录中的字段,mongodb,spring-mvc,Mongodb,Spring Mvc,我想更新已存储在数据库中的记录字段。我怎样才能做到这一点?到目前为止,我遇到的所有示例都是Python/Php或旧版本的MongoDB(Java),api不再是最新的 基本上,我希望在内存中加载具有特定用户ID的对象,并更改其用户名值。(我想让您参考下面的代码) 多谢各位 编辑 到目前为止,我得到了以下代码: public class UserDAO { MongoOperations mongoDb; public UserDAO(){ mongoDb = M

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

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

多谢各位

编辑

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

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();
}

感谢您抽出时间

要更改现有文档,请使用该方法

该方法采用两个参数

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


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

您是否有自己的三行代码,您认为这些代码可能有效但失败了?我不知道如何继续。我已经编写了一个DAO,通过它我为addUser和getUserById方法创建了包装器,但是,我不确定如何进行更新。因此,在这里粘贴这些行不会有多大帮助:/它会向其他人显示你确实花了时间,并使他们更同情你的问题。好吧,你是对的。我编辑了我原来的帖子。谢谢