我将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/