티스토리 뷰
728x90
반응형
Criteria는 직역하면 '기준'정도 되는 뜻으로, 리액티브 몽고 디비에서 쿼리 작성에 사용하는 클래스이다.
굉장히 다양한 메서드를 제공하며, 이를 이용하고 조합해 복잡한 Query, 혹은 Update 객체를 만들 수 있다.
이 글에서는 자주 쓰이는 메서드에 대해 짧게 정리하고 넘어가자.
- is(): '=='를 사용하여 해당 필드와 일치하는 값을 조회
- ne(): '!='를 사용하여 일치하지 않는 값을 조회
- lt(): '<'를 사용해 주어진 값보다 작은 값을 조회
- lte(): '<='를 사용
- gt(): '>'사용
- gte(): '>=' 사용
- in(): 해당 필드 값이 리스트, 배열 중 하나와 일치하는 값 조회
- nin(): 주어진 값 중 어떤 것도 포함하지 않는 값 조회
- regex(): 정규표현식을 사용해 일치하는 값 조회
- elemMatch(): 배열이나 리스트의 요소 중 하나가 해당 조건에 일치하는 값 조회
- exist(): 해당 필드가 존재하는 도큐먼트 검색
- type(): 해당 필드 타입이 지정한 BSON타입과 일치하는 도큐먼트 검색
이는 위에 말했듯 조합해서 사용할 수 있다.
Criteria criteria = Criteria.where("ratingList").in(ratingId).gte(20).and("age").lte(30);
추가로 실제 사용하면서 헷갈렸던 in()과 elemMatch()에 대해 정리하고 가자.
Criteria criteria = Criteria.where("ratingList").in("6429258eb046ab6cb410818d");
Criteria criteria = Criteria.where("ratingList").elemMatch(Criteria.where("_id").in(ratingId));
- in()
배열, 리스트 등의 내부에 특정 값이 포함되어 있는 모든 도큐먼트를 조회. 위 코드와 같은 경우는 ratingList 리스트에
"6429258eb046ab6cb410818d"가 포함된 모든 도큐먼트를 조회하게 된다. - elemMatch
배열, 리스트 필드 내부에 단순한 문자열이 아닌 객체가 있는 경우 여러 객체에 속한 필드의 동시비교를 위해 사용된다.
위 코드를 보면 ratingList 리스트 필드 내부에 '_id'값이 ratingId와 일치하는 객체가 존재하는 도큐먼트를 찾는다.
이때 '_id'와 같은 객체 내부 필드 이름이 반드시 존재해야 하며, 없는 경우 in()을 사용해야 한다.
마지막으로 실제 사용하고 있는 코드를 적으면 아래와 같다.
public Mono<Beer> findByRatingId(String ratingId) {
Criteria criteria = Criteria.where("ratingList").in(ratingId);
Query query = Query.query(criteria);
Mono<Beer> beerMono = reactiveMongoTemplate.findOne(query, Beer.class);
return beerMono;
}
반응형
'Java+Spring > WebFlux' 카테고리의 다른 글
[WebFlux]현재 요청을 보낸, 로그인 사용자 정보 불러오기 (4) | 2023.04.06 |
---|---|
[WebFlux]Reactive MongoDB - 쿼리, 정렬, 페이지네이션 (2) | 2023.04.05 |
[WebFlux]RSocket 튜토리얼 (1) | 2023.04.03 |
[WebFlux]자주 사용하는 연산자 정리(1) (2) | 2023.03.29 |
[WebFlux]Mono, Flux (0) | 2023.03.28 |
[WebFlux]리액티브 스트림(Reactive Streams) (2) | 2023.03.25 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 세모
- 유럽여행
- Python
- 알고리즘
- 지지
- 칼이사
- 야경
- 자바
- RX100M5
- 세계일주
- 여행
- 남미
- java
- 세계여행
- BOJ
- spring
- 맛집
- a6000
- 스트림
- 리스트
- Backjoon
- Algorithm
- 스프링
- 백준
- 기술면접
- 동적계획법
- 유럽
- 파이썬
- 면접 준비
- 중남미
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함