개요
이 가이드 에서는 MongoDB Java Reactive Streams 드라이버 사용하여 문서를 찾는 방법을 학습 수 있습니다.
샘플 데이터
이 가이드 의 예제에서는 Atlas 샘플 데이터 세트 의 sample_restaurants.restaurants 컬렉션 을 사용합니다. 무료 MongoDB Atlas cluster 를 생성하고 샘플 데이터 세트를 로드하는 방법을 학습 보려면 시작하기를 참조하세요.
중요
프로젝트 리액터 라이브러리
이 가이드 에서는 Project Reactor 라이브러리를 사용하여 Java Reactive Streams 운전자 메서드에서 반환된 Publisher 인스턴스를 사용합니다. 프로젝트 Reactor 라이브러리와 사용 방법에 대해 자세히 학습 Reactor 문서에서 시작하기 참조하세요. 이 가이드에서 Project Reactor 라이브러리 메서드를 사용하는 방법에 대해 자세히 학습하려면 MongoDB에 데이터 쓰기 가이드를 참조하세요.
문서 찾기
Java Reactive Streams 운전자 에는 컬렉션 에서 문서를 검색하는 한 가지 메서드인 find() 가 포함되어 있습니다.
이 메서드는 쿼리 필터하다 를 사용하여 하나 이상의 일치하는 문서를 반환합니다. 쿼리 필터하다 는 쿼리 에서 조회 하려는 문서를 지정하는 객체 입니다.
쿼리 필터에 학습 보려면 쿼리 지정 가이드 를 참조하세요.
하나의 문서 찾기
컬렉션 에서 단일 문서 를 찾으려면 first() 메서드를 find() 메서드 호출에 연결하고 찾으려는 문서 의 기준을 지정하는 find() 메서드 호출에 쿼리 필터하다 를 전달합니다. 쿼리 필터하다 와 일치하는 문서 가 두 개 이상인 경우 find().first() 구문은 조회된 결과에서 첫 번째 로 일치하는 문서 를 반환합니다. 쿼리 필터하다 와 일치하는 문서가 없으면 구문은 None 를 반환합니다.
팁
find().first() 구문은 일치하는 문서 가 하나만 있거나 첫 번째 일치 항목에만 관심이 있는 경우에 유용합니다.
다음 예시 에서는 find().first() 구문을 사용하여 "cuisine" 필드 에 "Bakery" 값이 있는 첫 번째 문서 를 찾습니다.
Publisher<Document> findDocPublisher = restaurants.find( eq("cuisine", "Bakery")).first(); Mono.from(findDocPublisher) .doOnNext(System.out::println) .blockLast();
정렬에 학습 보려면 반환할 문서 지정 가이드 를 참조하세요.
여러 문서 찾기
컬렉션에서 여러 문서를 찾으려면 검색하려는 문서의 기준을 지정하는 find() 메서드에 쿼리 필터를 전달합니다.
다음 예제에서는 find() 메서드를 사용하여 "cuisine" 필드에 "Spanish" 값이 있는 모든 문서를 찾습니다.
FindPublisher<Document> findDocPublisher = restaurants.find( eq("cuisine", "Spanish")); Flux.from(findDocPublisher) .doOnNext(System.out::println) .blockLast();
참고
모든 문서 찾기
컬렉션 의 모든 문서를 찾으려면 find() 메서드에 매개변수를 전달하지 않습니다.
Publisher<Document> findAllPublisher = restaurants.find(); Flux.from(findAllPublisher) .doOnNext(System.out::println) .blockLast();
검색 동작 수정
다른 메서드를 연결하여 find() 메서드의 동작을 수정할 수 있습니다. 다음 표에서는 일반적으로 사용되는 메서드에 대해 설명합니다.
Argument | 설명 |
|---|---|
| 쿼리 결과로 반환되는 각 배치 내 최대 문서 수입니다. 기본값 으로 운전자 이 값을
|
| 데이터 정렬 옵션을 |
| 쿼리 에 문자열을 첨부합니다. 이렇게 하면 서버 로그와 프로필 데이터에서 작업을 추적하고 해석하는 데 도움이 될 수 있습니다. 쿼리 주석에 대해 자세히 학습 MongoDB Server 매뉴얼의 커서 .comment() 페이지를 참조하세요. |
| 문서를 스캔할 인덱스를 가져오거나 설정합니다. 자세한 내용은 MongoDB Server 매뉴얼의 힌트 설명 을 참조하세요. |
다음 예시 find() 메서드를 사용하여 "cuisine" 필드 에 "Italian" 값이 있고 주석을 설정하는 모든 문서를 찾습니다.
FindPublisher<Document> findDocPublisher = restaurants.find( eq("cuisine", "Italian")).comment("Find operation"); Flux.from(findDocPublisher) .doOnNext(System.out::println) .blockLast();
사용 가능한 인수의 전체 목록은 인터페이스에 대한 API 설명서를 FindPublisher 참조하세요.
추가 정보
쿼리 필터에 학습 보려면 쿼리 지정 가이드 를 참조하세요.
Java Reactive Streams 운전자 사용하여 문서를 검색하는 실행 가능한 코드 예제는 문서 쿼리 가이드 참조하세요.
API 문서
이 가이드에서 사용되는 메서드 또는 유형에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.