$group - Amazon DocumentDB

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

$group

Amazon DocumentDB의 $group 집계 단계를 사용하면 지정된 표현식별로 문서를 그룹화하고 그룹화된 데이터에 대해 다양한 누적 작업을 수행할 수 있습니다. 이는 그룹화된 데이터를 기반으로 합계, 평균 또는 기타 통계를 계산하는 등의 작업에 유용할 수 있습니다.

파라미터

  • _id: 입력 문서를 그룹화해야 하는 표현식을 지정합니다. 필드 이름, 계산된 표현식 또는 둘 다일 수 있습니다.

  • accumulator expressions: (선택 사항) 그룹화된 데이터에 적용해야 하는 하나 이상의 누적기 표현식입니다. 이러한 표현식은 위에서 언급한 누적기 연산자를 사용합니다.

예제(MongoDB 쉘)

다음 예시에서는 고객을 도시별로 그룹화하고 각 도시의 총 주문 금액을 계산합니다.

샘플 문서 생성

db.customers.insertMany([ { name: "John Doe", city: "New York", orders: [{ amount: 100 }, { amount: 200 }] }, { name: "Jane Smith", city: "Los Angeles", orders: [{ amount: 150 }, { amount: 300 }] }, { name: "Bob Johnson", city: "New York", orders: [{ amount: 75 }, { amount: 125 }] }, { name: "Samantha Lee", city: "Chicago", orders: [{ amount: 50 }, { amount: 100 }] } ]);

쿼리 예제

db.customers.aggregate([ { $group: { _id: "$city", totalOrders: { $sum: { $sum: "$orders.amount" } } } } ]);

출력

[ { _id: 'Chicago', totalOrders: 150 }, { _id: 'Los Angeles', totalOrders: 450 }, { _id: 'New York', totalOrders: 500 } ]

코드 예제

$group 명령을 사용하기 위한 코드 예제를 보려면 사용하려는 언어의 탭을 선택합니다.

Node.js
const { MongoClient } = require('mongodb'); async function groupByCity() { const uri = 'mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false'; const client = new MongoClient(uri); try { await client.connect(); const db = client.db('test'); const result = await db.collection('customers').aggregate([ { $unwind: '$orders' }, { $group: { _id: '$city', totalOrders: { $sum: '$orders.amount' } } } ]).toArray(); console.log(result); } catch (err) { console.error('Error during aggregation:', err); } finally { await client.close(); } } groupByCity();
Python
from pymongo import MongoClient def group_by_city(): client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false') try: db = client.test result = list(db.customers.aggregate([ {'$unwind': '$orders'}, { '$group': { '_id': '$city', 'totalOrders': {'$sum': '$orders.amount'} } } ])) print(result) except Exception as e: print(f"Error during aggregation: {e}") finally: client.close() group_by_city()