如何使用Spring Data和MongoDB更新Object?

时间:2013-07-03 12:01:53

标签: spring mongodb spring-data spring-data-mongodb

如何使用Spring Data和MongoDB更新Object?

我只是做一个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;
    }

4 个答案:

答案 0 :(得分:8)

如果您阅读MongoOperations / MongoTemplate的javadoc,您会看到

save()

执行:

upsert() 

所以是的,您可以更新您的对象并致电保存。

答案 1 :(得分:4)

您可以在一行中执行“查找”和“更新”操作。

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

你可以在这里找到一些优秀的教程 Spring Data MongoDB Helloworld

答案 2 :(得分:4)

您可以使用template.save()repository.save(entity)方法。但是mongo也Update反对这个操作。

例如:

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

答案 3 :(得分:0)

下面的代码是使用MongoTemplate进行更新操作的等效实现。

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