user2428795
user2428795

Reputation: 547

How do I update Object with Spring Data and MongoDB?

How do I update Object with Spring Data and MongoDB?

do I just do a template.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;
    }

Upvotes: 9

Views: 45640

Answers (4)

abhinav kumar
abhinav kumar

Reputation: 1803

Below code is the equivalent implementation using MongoTemplate for update operation.

public Person update(Person person){
        Query query = new Query();
        query.addCriteria(Criteria.where("id").is(person.getId()));
        Update update = new Update();
        update.set("name", person.getName());
        update.set("description", person.getDescription());
        return mongoTemplate.findAndModify(query, update, Person.class);
    }

Upvotes: 1

Trevor Gowing
Trevor Gowing

Reputation: 2296

If you read the javadoc for MongoOperations/MongoTemplate you will see that

save()

performs an:

upsert() 

So yes you can just update your object and call save.

Upvotes: 13

akinKaplanoglu
akinKaplanoglu

Reputation: 768

You can just use template.save() or repository.save(entity) methods for this. But mongo has also Update object for this operations.

For example:

Update update=new Update();
update.set("fieldName",value);
mongoTemplate.update**(query,update,entityClass);

Upvotes: 5

Satheesh Kumar
Satheesh Kumar

Reputation: 156

You could probably do both 'find' and 'update' operations in one line.

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

You can find some excellent tutorials at Spring Data MongoDB Helloworld

Upvotes: 7

Related Questions