java - 如何在循环内更新 SpringData MongoDB 文档?

标签 java mongodb spring-data

我已将 POJO 映射到 SpringData MongoDB 文档

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

然后我在 MongoDB 中找到该列表,并尝试使用 MongoTemplate 保存修改列表中的 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);
    ...

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

最佳答案

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

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

关于java - 如何在循环内更新 SpringData MongoDB 文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32120757/

相关文章:

java - 如何在 Spring Data JPA 中将分页与条件查询结合起来?

java - 将 JavaRDD<List<SomeClass>> 转换为 JavaRDD<SomeClass>

mysql - Doctrine2 - 哪种方法更合适?

javascript - 将 $lookup 结果转换为对象而不是数组

node.js - mongodb 连接问题 "Cannot call method ' 更新'未定义"

java - 如何从 JdbcTemplate 获取受影响的行数?

带有分页的 Spring Data 和 Native Query

java - 使用 Room Persistence 在运行时生成查询

java - 在调用构造函数之前,Java 中的对象是否在堆上创建?

java - 如何在PreferenceActivity中添加Toolbar