2013-07-03 1 views
3

Как обновить объект с помощью данных Spring и MongoDB?Как обновить объект с помощью данных Spring и MongoDB?

do Я просто делаю шаблон.save()?

public Person update(String id, String Name) 
    { 
     logger.debug("Retrieving an existing person"); 
     // Find an entry where pid matches the id 

     Query query = new Query(where("pid").is(id)); 
     // Execute the query and find one matching entry 
     Person person = mongoTemplate.findOne("mycollection", query, Person.class); 

     person.setName(name); 
     /** 
     * How do I update the database 
     */ 

     return person; 
    } 
+1

могли бы вы принять ответ, который помог вам решить эту проблему, если таковые имеются? –

ответ

3

Возможно, вы могли бы выполнить операции «найти» и «обновить» в одной строке.

mongoTemplate.updateFirst(query,Update.update("Name", name),Person.class) 

Вы можете найти отличные учебники на Spring Data MongoDB Helloworld

6

Если вы читали javadoc для MongoOperations/MongoTemplate вы увидите, что

save() 

выполняет:

upsert() 

Так что да, вы можете просто обновить т. е. ваш объект и вызов save.

+0

Имейте в виду, что save() переопределит весь ваш объект, хотя вам может быть интересно обновить только часть документа. – Robocide

2

Вы можете использовать template.save() или repository.save(entity) методы для этого. Но у mongo также есть объект Update для этой операции.

Например:

Update update=new Update(); 
update.set("fieldName",value); 
mongoTemplate.update**(query,update,entityClass); 
Смежные вопросы