[파이썬] mongoengine 고급 집계 기능

MongoEngine은 Python에서 MongoDB와 상호 작용하는 동적 객체-문서 매핑 프레임워크입니다. 이것은 MongoDB의 고급 집계 기능을 사용하여 데이터베이스에서 복잡한 질의를 수행하는 강력한 기능을 제공합니다. 집계 작업은 데이터의 그룹화, 필터링, 정렬 및 변환을 통해 유연한 방식으로 데이터를 조작할 수 있습니다.

기본 집계 작업

MongoEngine을 사용하여 MongoDB에서 데이터를 집계하려면 다음 단계를 따르면 됩니다.

  1. 쿼리를 작성하고 필요에 따라 필터링합니다.
  2. 필요한 필드를 선택하여 데이터를 변환합니다.
  3. 집계 작업을 수행합니다. 여기에는 데이터 그룹화, 정렬 및 필터링이 포함될 수 있습니다.
  4. 결과를 처리하여 필요한 출력을 얻습니다.
from mongoengine import *
import datetime

# MongoDB에 연결
connect('mydatabase')

# MongoDB와 상호 작용할 모델 정의
class Order(Document):
    order_date = DateTimeField(default=datetime.datetime.now)
    customer = StringField(required=True)
    total_amount = FloatField(required=True)

# 쿼리 작성과 필터링
# 오늘 날짜 기준 최근 주문만 가져오기
query = Order.objects(order_date__gte=datetime.datetime.today().replace(hour=0, minute=0, second=0, microsecond=0))

# 집계 작업 수행
# 고객별 주문 금액 합계 계산
pipeline = [
    {'$group': {'_id': '$customer', 'total_amount': {'$sum': '$total_amount'}}},
    {'$sort': {'total_amount': -1}},
    {'$limit': 10}
]

result = Order.objects.aggregate(*pipeline)

# 결과 처리
for entry in result:
    print(f"Customer: {entry['_id']}, Total Amount: {entry['total_amount']}")

위의 예제에서는 Order 모델을 정의하고 MongoDB에 연결합니다. 그런 다음 오늘 날짜 기준으로 최근 주문을 가져와서 집계 작업을 수행합니다. pipeline 변수에 정의된 파이프라인을 사용하여 고객별 주문 금액의 합계를 계산합니다. 마지막으로 결과를 처리하여 결과를 출력합니다.

이것은 쉽게 사용할 수 있는 간단한 예제입니다. MongoDB에서 제공하는 다양한 집계 기능을 활용하여 더 복잡한 데이터 처리 작업을 수행할 수도 있습니다.

MongoEngine을 사용하여 MongoDB에서 고급 집계 작업을 수행하는 방법에 대한 자세한 내용은 공식 MongoEngine documentation을 참조하세요.

Note: 이 문서는 MongoDB 버전 4.x 기준으로 작성되었습니다.