Пользовательский метод для запроса на обновление с данными Spring MongoRepository

Я использую org.springframework.data.mongodb.repository.MongoRepository. Я написал некоторый пользовательский метод, как показано ниже,

public interface DocRepository extends MongoRepository<Doc, String> {
     Doc findByDocIdAndAssignmentId(final String docId, final String assignemtId);
}

Как я могу написать собственный метод, который обновляет все записи при соответствии критериям.

Например, установите для поля наклона документа значение «abc», если идентификатор назначения «xyz»?


person Harshana    schedule 25.04.2018    source источник


Ответы (3)


1) Вам необходимо создать интерфейс, например CustomDocRepository, и добавить этот интерфейс в качестве базы для вашего DocRepository:

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

    void updateDocumentTitle(String id, String title);

}

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();
}
}

Это все, что вам нужно сделать

person Roman Lapin    schedule 13.07.2018
comment
документы. spring.io/spring-data/mongodb/docs/current/reference/html/ 9.6. Пользовательские реализации для репозиториев данных Spring - person Languoguang; 02.04.2021

При условии, что у вас есть атрибут autowired mongoTemplate в вашем классе service. Добавьте приведенный ниже код, чтобы обновить документ.

Query query = new Query();
query.addCriteria(Criteria.where("assignmentId").is("xyz"))
Update update = new Update();
update.set("title", "abc");
mongoTemplate.updateFirst(query, update, Doc.class);

Вам не нужно иметь findByDocIdAndAssignmentId для целей обновления.

person Rahul Raj    schedule 25.04.2018
comment
На самом деле у меня нет mongoTemplate. Я ищу собственный метод для операции обновления без использования mongoTemplate - person Harshana; 25.04.2018
comment
Вы получили ответ? - person Payal; 01.05.2020

Я нашел com.mongodb.MongoClient для достижения вышеуказанного

person Harshana    schedule 29.04.2018