문서 수 계산
이 페이지의 내용
개요
이 가이드 에서는 컬렉션 에 있는 문서 수의 정확한 개수와 예상 개수를 조회 하는 방법을 학습 수 있습니다.
샘플 데이터
이 가이드 의 예제에서는 Atlas 샘플 데이터 세트 의 sample_restaurants.restaurants
컬렉션 을 사용합니다. 무료 MongoDB Atlas cluster 를 생성하고 샘플 데이터 세트를 로드하는 방법을 학습 보려면 시작하기를 참조하세요.
중요
프로젝트 리액터 라이브러리
이 가이드 에서는 Project Reactor 라이브러리를 Publisher
사용하여 Java Reactive Streams 운전자 메서드에서 반환된 인스턴스를 사용합니다. 프로젝트 Reactor 라이브러리와 사용 방법에 학습 보려면 Reactor 문서에서 시작하기 를 참조하세요. 이 가이드 에서 Project Reactor 라이브러리 메서드를 사용하는 방법에 학습 보려면 MongoDB 에 데이터 쓰기 가이드 를 참조하세요.
정확한 개수 조회
컬렉션 의 문서 수를 계산하려면 countDocuments()
메서드를 사용합니다. 특정 검색 기준과 일치하는 문서 수를 계산하려면 countDocuments()
메서드에 쿼리 필터하다 를 전달합니다.
쿼리 지정에 학습 보려면 쿼리 지정을 참조하세요.
모든 문서 계산
컬렉션 에 있는 모든 문서의 개수를 반환하려면 다음 예시 와 같이 countDocuments()
메서드를 호출하고 매개 변수를 전달하지 않습니다.
Publisher<Long> countPublisher = restaurants.countDocuments(); Mono.from(countPublisher).doOnNext(System.out::println).blockLast();
특정 문서 수 계산
특정 검색 기준과 일치하는 문서 수를 반환하려면 다음 예시 와 같이 countDocuments()
메서드에 쿼리 를 지정합니다. 쿼리 를 지정하는 방법에 대한 학습 내용은 쿼리 지정 가이드 를 참조하세요.
Publisher<Long> countPublisher = restaurants.countDocuments( eq("cuisine", "Italian")); Mono.from(countPublisher) .doOnNext(System.out::println) .blockLast();
카운트 동작 사용자 지정
메서드에 선택적 매개변수를 전달하여 countDocuments()
메서드의 동작을 수정할 수 있습니다. CountOptions
클래스는 countDocuments()
메서드의 동작을 수정하는 메서드를 제공합니다. CountOptions
클래스를 사용하려면 클래스의 새 인스턴스 를 구성한 다음 해당 메서드 중 하나 이상을 호출하여 카운트 작업을 수정합니다. 이러한 메서드 호출을 함께 연결할 수 있습니다.
카운트 작업의 동작을 수정하려면 클래스 인스턴스 와 연결된 메서드 호출을 countDocuments()
메서드의 마지막 인수로 전달합니다.
다음 표에서는 CountOptions
클래스의 메서드에 대해 설명합니다.
메서드 | 설명 |
---|---|
collation(Collation collation) | Specifies the kind of language collation to use when sorting
results. For more information, see Collation
in the MongoDB Server manual. |
comment(BsonValue comment) | Attaches a BsonValue comment to the operation. For more information, see the insert command
fields guide in the
MongoDB Server manual. |
comment(String comment) | Attaches a String comment to the operation. For more information, see the insert command
fields guide in the
MongoDB Server manual. |
hint(Bson hint) | Sets the index for the operation as a Bson value.
For more information, see the hint statement
in the MongoDB Server manual. |
hintString(String hint) | Sets the index for the operation as a String value.
For more information, see the hint statement
in the MongoDB Server manual. |
limit(int limit) | Sets a limit for the maximum number of documents the cursor
returns. For more information, see cursor in the MongoDB Server documentation. |
MaxTime(long maxTime, TimeUnit timeUnit) | Sets the maximum execution time on the server for the operation. If the
operation does not complete before the time limit, the driver terminates
the operation. |
skip(int skip) | Sets the number of documents the query skips before returning results.
For more information, see skip in the
MongoDB Server manual. |
개수 수정 예시
다음 코드는 countDocuments()
메서드를 사용하여 cuisine
값이 "Italian"
인 restaurants
컬렉션 의 모든 문서 수를 계산합니다. 또한 "Count all Italian restaurants"
작업에 주석을 로 String
첨부합니다.
Publisher<Long> countPublisher = restaurants.countDocuments( eq("cuisine", "Italian"), new CountOptions().comment("Count all Italian restaurants")); Mono.from(countPublisher) .doOnNext(System.out::println) .blockLast();
예상 개수 조회
estimatedDocumentCount()
메서드를 호출하여 컬렉션 에 있는 문서 수의 추정치를 얻을 수 있습니다. 이 메서드는 컬렉션 메타데이터 를 기반으로 문서 수를 추정하며, 이는 정확한 개수를 계산하는 것보다 빠를 수 있습니다.
다음 예에서는 컬렉션의 문서 수를 추정합니다.
Publisher<Long> countPublisher = restaurants.estimatedDocumentCount(); Mono.from(countPublisher) .doOnNext(System.out::println) .blockLast();
예상 카운트 동작 사용자 지정
메서드에 선택적 매개변수를 전달하여 estimatedDocumentCount()
메서드의 동작을 수정할 수 있습니다. EstimatedDocumentCountOptions
클래스는 estimatedDocumentCount()
메서드의 동작을 수정하는 메서드를 제공합니다. EstimatedDocumentCountOptions
클래스를 사용하려면 클래스의 새 인스턴스 를 구성한 다음 해당 메서드 중 하나 이상을 호출하여 카운트 작업을 수정합니다. 이러한 메서드 호출을 함께 연결할 수 있습니다.
카운트 작업의 동작을 수정하려면 클래스 인스턴스 와 연결된 메서드 호출을 estimatedDocumentCount()
메서드의 유일한 인수로 전달합니다.
다음 표에서는 estimatedDocumentCount()
을(를) 사용자 지정하기 위해 설정할 수 있는 옵션에 대해 설명합니다.
속성 | 설명 |
---|---|
comment(BsonValue comment) | Attaches a BsonValue comment to the operation. For more information, see the insert command
fields guide in the
MongoDB Server manual. |
comment(String comment) | Attaches a String comment to the operation. For more information, see the insert command
fields guide in the
MongoDB Server manual. |
MaxTime(long maxTime, TimeUnit timeUnit) | Sets the maximum execution time on the server for the operation. If the
operation does not complete before the time limit, the driver terminates
the operation. |
예상 개수 수정 예시
다음 코드는 estimatedDocumentCount()
메서드를 사용하여 restaurants
컬렉션 의 문서 수를 추정합니다. 또한 "Estimated count of all documents"
를 작업에 String
으로 연결합니다.
Publisher<Long> countPublisher = restaurants.estimatedDocumentCount( new EstimatedDocumentCountOptions() .comment("Estimated count of all documents")); Mono.from(countPublisher) .doOnNext(System.out::println) .blockLast();
API 문서
이 가이드에서 사용되는 메서드 또는 유형에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.