spring에서 mongo 조회하는 방법은 몇가지 있어보인다.
검색에서 가장 많이 나오는 자료와 다르게...
기존 코드 쓰는 방식이 이거여서 ... 이 방식으로 찾았는데, 금방 나오지는 않는다. 그래서 정리
FindIterable<Document> iterable = db.getCollection("aaaaa").withReadPreference(ReadPreference.secondaryPreferred()).find(filter);
FindIterable 이걸 쓰고 있는 환경이어서 여기에 맞게 필요했음
필요사항
greater than, less than 사용하여 비교,
비교값은 날짜(ISOdate) 비교필요
예제 코드
LocalDate now = LocalDate.now(ZoneId.of("GMT"));
System.out.println(LocalDateTime.now(ZoneId.of("GMT")).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
// string to instant 날짜
// Instant to = Instant.parse("2022-07-05T00:00:00.000Z");
// Localdate to Instant 날짜
Instant from = LocalDate.now().atStartOfDay().toInstant(ZoneOffset.UTC);
// 타임존 설정방법
Instant to = LocalDate.now().plusDays(1).atStartOfDay().toInstant(ZoneOffset.UTC);
Bson filter = Filters.and(Filters.gte("sendDate", from), // start just after our last position
Filters.lt("sendDate", to)); // skip internal movements across shards
FindIterable<Document> iterable = db.getCollection("컬랙션").withReadPreference(ReadPreference.secondaryPreferred()).find(filter);
MongoCursor<Document> cursor = iterable.iterator();
// 조회
while (cursor.hasNext()) {
Document document = cursor.next();
System.out.println(document);
}
참고
https://www.tabnine.com/code/java/classes/com.mongodb.client.FindIterable
https://www.tabnine.com/code/java/methods/org.springframework.data.mongodb.core.query.Criteria/gte
https://stackoverflow.com/questions/54970857/mongodb-filters-between-date-in-java
https://www.geeksforgeeks.org/date-toinstant-method-in-java-with-examples/
'Web > 스프링' 카테고리의 다른 글
동기 비동기 블로킹 논블로킹 개념 정리 (0) | 2024.01.18 |
---|---|
[Spring] 필터(Filter)와 인터셉터(Interceptor)의 개념 및 차이 (0) | 2023.07.18 |
kafka 컨슈머 실패시 Exception 으로 조건 구분하기 Exception체크 (0) | 2020.08.26 |
Get RequestBody and ResponseBody at HandlerInterceptor 컨트롤러 추가 호출 (0) | 2020.07.28 |
[mybatis] ibatis -> mybatis 트랜잭션 관리 (0) | 2019.11.20 |
댓글