2013-11-09 85 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