2013-11-09 58 views
0

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

基本上我想加载一个特定的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(); 
} 

谢谢你您的时间

+1

你有你自己的三条线,你认为可能已经工作但失败了吗? –

+0

我不知道如何继续。我写了一个DAO,我为addUser和getUserById方法创建了包装,但是,我不确定如何执行更新。因此,在这里粘贴这些线不会有太大的帮助:/ – user2398832

+1

它会向其他人展示您真正花费时间并让他们更加同情您的问题。 –

回答

1

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

该方法需要两个参数。

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

第二个是文档将被替换的文档。如果只想更新单个字段而不替换整个文档,则需要使用$set operator