반응형
Spring Tool Suite 4
Mongodb에서 최신데이터만 10건 추출하여 가져오기를 수행하려 한다.
Page로 가져오기랑 List로 가져오기 두 방법이 있던데
Page로 데이터를 담아올경우, 사용하지 않는 데이터가 많고 추출하기도 번잡스러워 한번에 List로 함.
Repository에 간단히 @Query를 사용하는게 습관된지라 간단간단 쉽게쉽게 지향!
List 로 데이터 가져오기
Repository
- @Query로 최신데이터만 가져오도록 _id : -1 작성 (-1 : 마지막부터, 1: 처음부터)
- Pageable은 대용량의 Mongodb를 다 가져오는 멍청이가 되지 않도록, 가져오는 데이터 수를 제한하기 위함
import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.data.mongodb.repository.Query;
import org.springframework.stereotype.Repository;
@Repository
public interface MonitorExternalRepo extends MongoRepository<MonitorExternal, String>{
@Query(sort = "{_id:-1}")
List<MonitorExternal> findBy(Pageable pageable);
}
Service
- 서비스해줄 Class에는 작성한 쿼리를 갖고 있는 Repository를 멤버변수로 추가하고 다음 코드를 작성한다.
<TMI> new PageRequst(0,10) 은 더이상 사용이 안되므로 대신에 아래 코드처럼 PageRequest.of(0,10)을 써줘야함
public List<MonitorExternal> findAll() {
return monitorExternalRepo.findBy(PageRequest.of(0, 10));
}
간단한 테스트를 위해서 RestController에 테스트용 API 하나 만들어서 return 해보면 확인가능
@RequestMapping(value = "/temp", method = RequestMethod.GET)
public List<MonitorExternal> findreturn(){
return adminService.findAll();
}
번외. Page 로 데이터 가져오기
- 별다른 Repository 작업 X
Service
public Page<MonitorExternal> findAllPage() {
Pageable pageable = PageRequest.of(0, 10);
Query query = new Query();
query.with(Sort.by(Sort.Direction.DESC, "_id"));
query.with(pageable);
List<MonitorExternal> list = mongoTemplate.find(query, MonitorExternal.class);
return PageableExecutionUtils.getPage(
list,
pageable,
() -> mongoTemplate.count(new Query().limit(10).skip(-1), MonitorExternal.class));
}
간단한 테스트를 위해서 RestController에 테스트용 API 하나 만들어서 return 해보면 확인가능
@RequestMapping(value = "/temp2", method = RequestMethod.GET)
public Page<MonitorExternal> findreturn2(){
return adminService.findAllPage();
}
728x90
반응형
'개발아닌개발 > mongoDB' 카테고리의 다른 글
[오류] the type reactor.core.publisher.mono cannot be resolved. it is indirectly referenced from required .class files (0) | 2021.11.15 |
---|---|
[Mongo DB] 우분투 20.04.3 LTS 에 몽고DB설치하기 (0) | 2021.11.10 |
Ubuntu에서 Mongo DB 기본 동작 실습하기 (0) | 2021.11.10 |
댓글