如何在循环中更新SpringData MongoDB文档?

时间:2015-08-20 14:18:12

标签: java mongodb spring-data

我将POJO映射到SpringData MongoDB文档

@Document(collection = “cacheVersion” ) 
public class CacheVersionBean {
    private boolean active = true;
    ...

然后我在MongoDB中找到列表,并尝试使用MongoTemplate save修改列表中的MongoDb文档:

Query query = new Query().addCriteria(Criteria.where("active").is(true));
List<CacheVersionBean> versionBeans = mongoTemplate.find(query, CacheVersionBean.class);
for (CacheVersionBean cacheVersionBean: versionList)
{
    cacheVersionBean.setActive(false);
    mongoTemplate.save(cacheVersionBean);
    ...

但是,此代码不是修改数据库中的文档,而是创建新文档。更新的最简单方法是什么?

1 个答案:

答案 0 :(得分:1)

我认为你需要在POJO中添加一个@Id带注释的字段(String或BigInteger)(或者只是一个名为'id'的字段)。 Spring将使用它,然后了解您正在保存的文档已经在数据库中,并更新它而不是创建新文档:

http://docs.spring.io/spring-data/data-document/docs/current/reference/html/#d0e1508