使用 Spring 数据 MongoRepository 更新查询的自定义方法

Har*_*ana 4 java mongodb spring-data mongorepository spring-boot

我正在使用 org.springframework.data.mongodb.repository.MongoRepository。我写了一些像下面这样的自定义方法,

public interface DocRepository extends MongoRepository<Doc, String> {
     Doc findByDocIdAndAssignmentId(final String docId, final String assignemtId);
}
Run Code Online (Sandbox Code Playgroud)

如何编写自定义方法,在满足条件时更新所有条目。

例如,如果分配 ID 为“xyz”,则将文档倾斜字段设置为“abc”?

Rom*_*pin 7

1) 您需要创建接口,例如 CustomDocRepository 并将此接口添加为您的 DocRepository 的基础:

public interface DocRepository extends MongoRepository<Doc, String>, CustomDocRepository {

    void updateDocumentTitle(String id, String title);

}
Run Code Online (Sandbox Code Playgroud)

2) 您需要为 DocRepository 添加实现:

@Repository
public class CustomDocRepositoryImpl implements DocRepository {
  @Autowired
  private MongoTemplate mongoTemplate;


@Override
public void updateDocumentTitle(String id, String title) {
    Query query = new Query().addCriteria(where("_id").is(id));

    Update update = new Update();
    update.set("title", title);
    mongoTemplate.update(Doc.class).matching(query).apply(update).first();
}
}
Run Code Online (Sandbox Code Playgroud)

这就是你需要做的一切

  • https://docs.spring.io/spring-data/mongodb/docs/current/reference/html/index.html#repositories.single-repository-behavior 9.6。Spring 数据存储库的自定义实现 (2认同)
  • 没有可能通过在存储库中的“@Query”注释方法中编写查询来做到这一点吗? (2认同)