9

如何使用 Spring Data 和 MongoDB 更新对象?

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

4 回答 4

13

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.

于 2013-07-05T12:45:47.757 回答
7

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

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

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

于 2013-07-03T13:12:13.580 回答
5

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

例如:

Update update=new Update();
update.set("fieldName",value);
mongoTemplate.update**(query,update,entityClass);
于 2014-09-05T09:35:48.517 回答
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);
    }
于 2020-08-12T10:42:22.017 回答