Retrieve Data
개요
이 가이드 에서는 MongoDB Java Reactive Streams 드라이버 를 사용하여 읽기 작업을 통해 MongoDB 컬렉션 에서 데이터를 조회 하는 방법을 학습 수 있습니다.
샘플 데이터
이 가이드 의 예제에서는 Atlas 샘플 데이터 세트 의 sample_restaurants.restaurants
컬렉션 을 사용합니다. 무료 MongoDB Atlas cluster 를 생성하고 샘플 데이터 세트를 로드하는 방법을 학습 보려면 시작하기를 참조하세요.
중요
프로젝트 리액터 라이브러리
이 가이드 에서는 Project Reactor 라이브러리를 사용하여 Java Reactive Streams 운전자 메서드에서 반환된 Publisher
인스턴스를 사용합니다. Project 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 | 설명 |
---|---|
batchSize(int batchSize) | Limits the number of documents to hold in a cursor at a given time. To
learn more about cursors, see cursor in the MongoDB Server documentation. |
collation(Collation collation) | Sets the collation options as an instance of the Collation class. |
comment(String comment) | Attaches a string to the query. This can help you trace and interpret the
operation in the server logs and in profile data. To learn more about query comments,
see the $comment page. |
hint(Bson hint) | Gets or sets the index to scan for documents.
For more information, see the hint statement
in the MongoDB Server manual. |
maxTime(long maxTime, TimeUnit timeUnit) | Sets the maximum execution time on the server for this operation. If this time is
exceeded, the Java Reactive Streams driver aborts the operation and raises an ExecutionTimeout . |
다음 예시 에서는 find()
메서드를 사용하여 "cuisine"
필드 의 값이 "Italian"
이고 최대 실행 시간이 10 초로 설정되어 있는 모든 문서를 찾습니다.
FindPublisher<Document> findDocPublisher = restaurants.find( eq("cuisine", "Italian")).maxTime(10L, TimeUnit.SECONDS); Flux.from(findDocPublisher) .doOnNext(System.out::println) .blockLast();
사용 가능한 인수의 전체 목록은 API 설명서 를 FindPublisher
참조하세요. 인터페이스의 경우.
추가 정보
쿼리 필터에 학습 보려면 쿼리 지정 가이드 를 참조하세요.
Java Reactive Streams 운전자 를 사용하여 문서를 검색하는 실행 가능한 코드 예제는 MongoDB 에서 데이터 읽기 가이드 를 참조하세요.
API 문서
이 가이드에서 사용되는 메서드 또는 유형에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.