我将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);
    ...


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

最佳答案

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

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

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

10-10 19:21