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

如何使用Spring数据和MongoDB更新对象?,spring,mongodb,spring-data,spring-data-mongodb,Spring,Mongodb,Spring Data,Spring Data Mongodb,如何使用Spring数据和MongoDB更新对象 我是否只需要执行一个template.save() 您可能可以在一行中同时执行“查找”和“更新”操作 mongoTemplate.updateFirst(query,Update.update("Name", name),Person.class) 你可以在网站上找到一些优秀的教程 如果您阅读for MongoOperations/MongoTemplate,您将看到 save() 执行以下操作: upsert() 因此,是的,您可以只更

如何使用Spring数据和MongoDB更新对象

我是否只需要执行一个template.save()


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

mongoTemplate.updateFirst(query,Update.update("Name", name),Person.class)
你可以在网站上找到一些优秀的教程

如果您阅读for MongoOperations/MongoTemplate,您将看到

save()
执行以下操作:

upsert() 

因此,是的,您可以只更新对象并调用save。

您可以使用
template.save()
repository.save(entity)
方法进行此操作。但是mongo也有用于此操作的
Update
对象

例如:

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

下面的代码是使用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);
    }

请接受帮助您解决此问题的答案(如果有的话)?请记住,save()将覆盖整个对象,而您可能只想更新文档的一部分。我还看到了
标准。使用了where(“\u id”)
。你能评论一下吗?例如,这两种变体是否都起作用?谢谢_ID字段是每个文档的主键,也可以通过ID访问。我们可以将ID视为yid的别名。
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);
    }