Docs Menu
Docs Home
/ / /
Java Reactive Streams 드라이버
/

Retrieve Data

이 페이지의 내용

  • 개요
  • 샘플 데이터
  • 문서 찾기
  • 하나의 문서 찾기
  • 여러 문서 찾기
  • 검색 동작 수정
  • 추가 정보
  • API 문서

이 가이드 에서는 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().first() 구문은 디스크의 첫 번째 문서 를 기본 순서 반환합니다.

정렬에 학습 보려면 반환할 문서 지정 가이드 를 참조하세요.

컬렉션에서 여러 문서를 찾으려면 검색하려는 문서의 기준을 지정하는 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 설명서를 참조하세요.

돌아가기

쿼리 지정