Web/스프링

[java-mongo] FindIterable 조회 방법 example 예제

벨포트조던 2022. 7. 6.
반응형

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/

 

 

반응형

댓글