AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
Docs Menu

애그리게이션 프레임워크

집계 파이프라인은 데이터 처리 파이프라인 개념을 모델로 한 데이터 애그리게이션 프레임워크입니다.

집계 에 학습 보려면 서버 매뉴얼에서 집계 파이프라인 을 참조하세요.

이 가이드의 코드 예제를 실행하려면 다음 구성 요소를 설정해야 합니다.

  • 문서 자산 Github에 있는 restaurants.json 파일의 문서로 채워진 test.restaurants 컬렉션입니다.

  • 다음 가져오기 문:

import com.mongodb.reactivestreams.client.MongoClients;
import com.mongodb.reactivestreams.client.MongoClient;
import com.mongodb.reactivestreams.client.MongoCollection;
import com.mongodb.reactivestreams.client.MongoDatabase;
import com.mongodb.client.model.Aggregates;
import com.mongodb.client.model.Accumulators;
import com.mongodb.client.model.Projections;
import com.mongodb.client.model.Filters;
import org.bson.Document;

중요

이 가이드 에서는 샘플 사용자 지정 구독자 구현 가이드 에 설명된 사용자 지정 Subscriber 구현을 사용합니다.

먼저 MongoDB deployment에 연결한 다음 MongoDatabase 및 MongoCollection 인스턴스를 선언하고 정의합니다.

다음 코드는 포트 27017 의 localhost 에서 실행되는 독립형 MongoDB 배포서버에 연결합니다. 그런 다음 test 데이터베이스를 참조하는 database 변수와 restaurants 컬렉션을 참조하는 collection 변수를 정의합니다.

MongoClient mongoClient = MongoClients.create();
MongoDatabase database = mongoClient.getDatabase("test");
MongoCollection<Document> collection = database.getCollection("restaurants");

MongoDB deployment에 연결하는 방법에 대해 자세히 알아보려면 MongoDB에 연결 튜토리얼을 참조하세요.

집계 집계 단계 목록을 MongoCollection.aggregate() 메서드에 전달합니다. 이 운전자 는 집계 단계에 대한 빌더 가 포함된 Aggregates 헬퍼 클래스를 제공합니다.

이 예제에서 집계 파이프라인은 다음 작업을 수행합니다.

  • $match 단계를 사용하여 categories 배열 필드에 "Bakery" 요소가 포함된 문서를 필터링합니다. 이 예제에서는 Aggregates.match() 를 사용하여 $match 단계를 빌드합니다.
  • $group 단계를 사용하여 일치하는 문서를 stars 필드 별로 그룹 하여 stars 의 각 고유 값에 대한 문서 수를 누적합니다. 이 예시 에서는 Aggregates.group() 를 사용하여 $group 단계를 빌드 하고 Accumulators.sum() 를 사용하여 축적자 표현식 을 빌드 합니다. $group 단계 내에서 사용하기 위한 축적자 자 표현식의 경우 운전자 는 Accumulators 헬퍼 클래스를 제공합니다.
collection.aggregate(
Arrays.asList(
Aggregates.match(Filters.eq("categories", "Bakery")),
Aggregates.group("$stars", Accumulators.sum("count", 1))
)
).subscribe(new PrintDocumentSubscriber());

$group 축적자 자 표현식의 경우 운전자 는 Accumulators 헬퍼 클래스를 제공합니다. 다른 집계 표현식의 경우 Document 클래스를 사용하여 표현식 을 수동으로 빌드 합니다.

다음 예제에서 집계 파이프라인은 $project 단계를 사용하여 name 필드와 값이 categories 배열의 첫 번째 요소인 계산된 필드 firstCategory 만 반환합니다. 이 예제에서는 Aggregates.project() 및 다양한 Projections 클래스 메서드를 사용하여 $project 단계를 빌드합니다.

collection.aggregate(
Arrays.asList(
Aggregates.project(
Projections.fields(
Projections.excludeId(),
Projections.include("name"),
Projections.computed(
"firstCategory",
new Document("$arrayElemAt", Arrays.asList("$categories", 0))
)
)
)
)
).subscribe(new PrintDocumentSubscriber());

집계 파이프라인 을 $explain 하려면 AggregatePublisher.explain() 메서드를 호출합니다.

collection.aggregate(
Arrays.asList(
Aggregates.match(Filters.eq("categories", "Bakery")),
Aggregates.group("$stars", Accumulators.sum("count", 1))))
.explain()
.subscribe(new PrintDocumentSubscriber());

다음 파이프라인 단계 중 하나를 포함하는 집계 파이프라인을 생성하고 실행하여 MongoDB Search 쿼리를 수행할 수 있습니다.

  • $search

  • $searchMeta

Java Reactive Streams 운전자 애그리게이션을 제공합니다.검색() 및 Aggregates.searchMeta() 메서드를 사용하여 MongoDB 검색 쿼리를 수행합니다.

MongoDB 검색 파이프라인 단계에 대해 자세히 학습하려면 Atlas 문서에서 집계 파이프라인 단계 선택 을 참조하세요.

참고

Atlas 및 Community Edition 버전 요구 사항

$search 집계 파이프라인 연산자 MongoDB v. 이상을 실행 MongoDB Atlas 클러스터 4 2 또는 MongoDB v. 이상을 실행 MongoDB Community Edition 클러스터에서 호스팅되는 컬렉션에만 사용할 수 있습니다. 8 2 컬렉션은 MongoDB Search 인덱스 에 포함되어야 합니다. 이 연산자 의 필수 설정 및 기능에 대해 자세히 학습 MongoDB Search 설명서를 참조하세요.

검색 연산자를 사용하여 MongoDB 검색 파이프라인 단계에서 검색 기준을 만들 수 있습니다.

Java Reactive Streams 운전자 다음 연산자에 대한 헬퍼 메서드를 제공합니다.

연산자
설명

불완전한 입력 문자열에서 일련의 문자가 포함된 단어나 구를 검색 합니다.

두 개 이상의 연산자를 단일 쿼리로 결합합니다.

필드 지정한 값과 일치하는지 확인합니다. equals() 및 equalsNull() 메서드에 매핑합니다.

문서에 인덱싱된 지정 필드 이름에 대한 경로가 있는지 테스트합니다.

지정된 경로에서 BSON 번호, 날짜, 부울, ObjectId, uuid 또는 문자열 값의 배열 검색 하고 필드 값이 지정된 배열 의 임의 값과 같은 문서를 반환합니다.

입력 문서와 유사한 문서를 반환합니다.

숫자, 날짜 및 GeoJSON 포인트 값을 쿼리하고 점수를 매기는 기능을 지원합니다.

인덱스 구성에 지정된 분석기 사용하여 정렬된 용어 시퀀스가 포함된 문서를 검색 합니다.

인덱싱된 필드와 값의 조합을 쿼리할 수 있습니다.

숫자, 날짜 및 문자열 값을 쿼리하고 점수를 매길 수 있도록 지원합니다. numberRange() 및 dateRange() 메서드에 매핑합니다.

쿼리 필드 정규 표현식 으로 해석합니다.

인덱스 구성에서 지정한 분석기 사용하여 전체 텍스트 검색 수행합니다.

검색 문자열에 모든 문자와 일치할 수 있는 특수 문자를 사용하는 쿼리를 활성화합니다.

이 예시 실행 하려면 먼저 movies 컬렉션 에 다음 정의가 있는 MongoDB 검색 인덱스 만들어야 합니다.

{
"mappings": {
"dynamic": true,
"fields": {
"title": {
"analyzer": "lucene.keyword",
"type": "string"
},
"genres": {
"normalizer": "lowercase",
"type": "token"
}
}
}
}

MongoDB Search 인덱스 생성에 대해 자세히 학습하려면 인덱스 가이드의 MongoDB Search 인덱스 관리 섹션을 참조하세요.

다음 코드는 다음 사양의 $search 단계를 생성합니다.

  • genres 배열 "Comedy"가 포함되어 있는지 확인합니다.

  • fullplot 필드 에서 "new york"구문을 검색합니다.

  • 1950 ~ 2000 사이의 year 값과 일치합니다.

  • 텀 "Love"로 시작하는 title 값을 검색합니다.

Bson searchStageFilters = Aggregates.search(
SearchOperator.compound()
.filter(
List.of(
SearchOperator.in(fieldPath("genres"), List.of("Comedy")),
SearchOperator.phrase(fieldPath("fullplot"), "new york"),
SearchOperator.numberRange(fieldPath("year")).gtLt(1950, 2000),
SearchOperator.wildcard(fieldPath("title"), "Love *")
)));
Bson projection = Aggregates.project(Projections.fields(
Projections.include("title", "year", "genres")
));
List<Bson> aggregateStages = List.of(searchStageFilters, projection);
Publisher<Document> publisher = movies.aggregate(aggregateStages);
publisher.subscribe(new SubscriberHelpers.PrintDocumentSubscriber());
Mono.from(publisher).block();

MongoDB Search 헬퍼 메서드에 대해 자세히 학습하려면, 드라이버 Core API 문서에 있는 SearchOperator 인터페이스 참조를 참조하세요.

집계 단계의 전체 목록은 MongoDB Server 매뉴얼의 집계 단계 를 참조하세요.

집계 파이프라인 을 어셈블하는 학습 에 대해 알아보고 예시를 보려면 MongoDB Server 매뉴얼에서 집계 파이프라인 을 참조하세요.

MongoDB 작업에 학습 보려면 MongoDB Server 매뉴얼의 출력 및 쿼리 계획 설명을 참조하세요.

이 가이드 에 언급된 클래스 및 메서드에 학습 보려면 다음 API 설명서를 참조하세요.