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

애그리게이션을 통한 데이터 변환

이 가이드에서는 PyMongo를 사용하여 애그리게이션 작업 을 수행하는 방법을 배울 수 있습니다.

애그리게이션 작업은 MongoDB 컬렉션의 데이터를 처리하고 계산된 결과를 반환합니다. Query API의 일부인 MongoDB 애그리게이션 프레임워크는 데이터 처리 파이프라인 개념을 모델로 합니다. 문서는 하나 이상의 단계를 포함하는 파이프라인에 들어가고, 이 파이프라인은 문서를 애그리게이션된 결과로 변환합니다.

집계 작업은 자동차 공장과 유사합니다. 자동차 공장에는 조립 라인이 있으며, 여기에는 드릴과 용접기 등 특정 작업을 수행할 수 있는 특수 공구를 갖춘 조립 스테이션이 있습니다. 원부품이 공장에 들어오면 조립 라인에서 이를 변형하고 조립하여 완제품으로 만듭니다.

집계 파이프라인은 조립 라인이고, 집계 단계는 조립 스테이션이며, 작업 연산자는 특수 도구입니다.

팁

애그리게이션 튜토리얼 완료

서버 매뉴얼의 전체 집계 파이프라인 튜토리얼 섹션에서 일반적인 집계 작업에 대한 자세한 설명을 제공하는 튜토리얼을 찾을 수 있습니다. 튜토리얼을 선택한 다음 Python 페이지 Select your language 오른쪽 상단의 드롭다운 메뉴에서 를 선택합니다.

찾기 조치를 사용하여 다음 조치을 수행할 수 있습니다:

  • 반환할 문서 선택

  • 반환할 필드 선택

  • 결과 정렬

집계 조치를 사용하여 다음 조치를 수행할 수 있습니다:

  • 찾기 작업 수행

  • 필드 이름 바꾸기

  • 필드 계산

  • 데이터 요약

  • 그룹 값

애그리게이션 작업을 사용할 때는 다음과 같은 제한 사항에 유의하세요.

  • 반환된 문서는 BSON 문서 크기 제한인 16 메가바이트를 위반하지 않아야 합니다.

  • 파이프라인 단계의 메모리 제한은 기본값 100 메가바이트입니다. aggregate() 메서드의 allowDiskUse 키워드 인수를 사용하여 이 제한을 초과할 수 있습니다.

중요

$graphLookup 예외

$graphLookup 단계에는 메가바이트의 엄격한 메모리 제한이 있으며 매개 100 변수를 allowDiskUse 무시합니다.

참고

이 예시 에서는 Atlas 샘플 데이터 세트 의 sample_restaurants.restaurants 컬렉션 을 사용합니다. 무료 MongoDB Atlas cluster 를 생성하고 샘플 데이터 세트를 로드하는 방법을 학습 보려면 PyMongo 시작하기를 참조하세요.

집계를 수행하려면 집계 단계 목록을 collection.aggregate() 메서드에 전달합니다.

다음 코드 예제에서는 뉴욕의 각 자치구에 있는 베이커리 수의 개수를 생성합니다. 이를 위해 다음 단계의 집계 파이프라인을 사용합니다.

  • cuisine 필드에 "Bakery" 값이 포함된 문서를 필터링하는 $match 단계입니다.

  • $ 그룹 단계는 필드 기준으로 일치하는 문서를 그룹 하여 각 고유 값에 대한 문서 수를 누적합니다.borough

Synchronous 또는 Asynchronous 탭 선택하여 해당 코드를 확인합니다.

# Define an aggregation pipeline with a match stage and a group stage
pipeline = [
{ "$match": { "cuisine": "Bakery" } },
{ "$group": { "_id": "$borough", "count": { "$sum": 1 } } }
]
# Execute the aggregation
aggCursor = collection.aggregate(pipeline)
# Print the aggregated results
for document in aggCursor:
print(document)
# Define an aggregation pipeline with a match stage and a group stage
pipeline = [
{ "$match": { "cuisine": "Bakery" } },
{ "$group": { "_id": "$borough", "count": { "$sum": 1 } } }
]
# Execute the aggregation
aggCursor = await collection.aggregate(pipeline)
# Print the aggregated results
async for document in aggCursor:
print(document)

앞의 코드 예제는 다음과 유사한 출력을 생성합니다.

{'_id': 'Bronx', 'count': 71}
{'_id': 'Brooklyn', 'count': 173}
{'_id': 'Missing', 'count': 2}
{'_id': 'Manhattan', 'count': 221}
{'_id': 'Queens', 'count': 204}
{'_id': 'Staten Island', 'count': 20}

MongoDB가 작업을 실행하는 방법에 대한 정보를 보려면 MongoDB에 설명 을 지시하면 됩니다. MongoDB는 작업을 설명할 때 실행 계획 과 성능 통계를 반환합니다. 실행 계획은 MongoDB가 작업을 완료할 수 있는 잠재적인 방법입니다. MongoDB에 작업 설명을 지시하면 MongoDB가 실행한 계획과 거부된 실행 계획이 모두 반환됩니다.

집계 작업을 설명하려면 PyMongoExplain 라이브러리 또는 데이터베이스 명령 사용할 수 있습니다. 아래에서 해당 탭 선택하여 각 메서드의 예시 확인하세요.

다음 예제와 같이 pip를 사용하여 pymongoexplain 라이브러리를 설치합니다.

python3 -m pip install pymongoexplain

다음 코드 예시 에서는 앞의 집계 예시 를 실행하고 MongoDB 에서 반환된 설명을 출력합니다.

# Define an aggregation pipeline with a match stage and a group stage
pipeline = [
{ "$match": { "cuisine": "Bakery" } },
{ "$group": { "_id": "$borough", "count": { "$sum": 1 } } }
]
# Execute the operation and print the explanation
result = ExplainableCollection(collection).aggregate(pipeline)
print(result)

다음 코드 예시 에서는 앞의 집계 예시 를 실행하고 MongoDB 에서 반환된 설명을 출력합니다.

# Define an aggregation pipeline with a match stage and a group stage
pipeline = [
{ $match: { cuisine: "Bakery" } },
{ $group: { _id: "$borough", count: { $sum: 1 } } }
]
# Execute the operation and print the explanation
result = database.command("aggregate", "collection", pipeline=pipeline, explain=True)
print(result)
...
'command': {'aggregate': 'collection',
'pipeline': [{'$match': {'cuisine': 'Bakery'}},
{'$group': {'_id': '$borough',
'count': {'$sum': 1}}}],
'explain': True,
...

팁

Python의 pprint 모듈을 사용하면 설명 결과를 더 쉽게 읽을 수 있습니다.

import pprint
...
pprint.pp(result)

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

집계 파이프라인을 어셈블하는 방법에 대해 알아보고 예제를 보려면 집계 파이프라인을 참조하세요.

MongoDB 작업에 대해 자세히 알아보려면 출력 설명 및 쿼리 계획을 참조하세요.

PyMongo로 애그리게이션 작업을 실행하는 방법에 대한 자세한 내용은 다음 API 문서를 참조하세요.