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

SQL-집계 매핑 차트

집계 파이프라인 은 여러 일반적인 SQL 집계 작업에 매핑됩니다.

다음 표에서는 일반적인 SQL 집계 텀, 함수 및 개념을 해당 MongoDB 집계 연산자와비교합니다.

SQL 용어, 함수 및 개념
MongoDB 집계 연산자

위치

그룹 기준

보유

SELECT

주문 기준

LIMIT

SUM()

COUNT()

가입

NEW_TABLE로 선택

테이블로 병합

모두 통합

전체 집계 파이프라인 및 표현식 연산자 목록은 다음에서 확인하세요.

다음 표에는 SQL 집계 문과 해당 MongoDB 문에 관한 간략한 참고 자료가 제시되어 있습니다. 표의 예시에서는 다음 조건을 가정합니다.

  • SQL 예시에서는 order_lineitem.order_id 및 orders.id 열로 결합되는 두 개의 테이블, orders 및 order_lineitem이 적용되어 있다고 가정합니다.

  • MongoDB 예시에서는 다음 프로토타입의 문서를 포함하는 한 개의 컬렉션 orders가 적용되어 있다고 가정합니다.

    { cust_id: "abc123", ord_date: ISODate("2012-11-02T17:04:11.102Z"), status: 'A', price: 50, items: [ { sku: "xxx", qty: 25, price: 1 }, { sku: "yyy", qty: 25, price: 1 } ]}
SQL 예시
MongoDB 예시
설명
SELECT COUNT(*) AS countFROM orders
db.orders.aggregate( [ { $group: { _id: null, count: { $sum: 1 } } }] )

다음의 모든 기록을 계산: orders

SELECT SUM(price) AS totalFROM orders
db.orders.aggregate( [ { $group: { _id: null, total: { $sum: "$price" } } }] )

orders의 price 필드를 합산

SELECT cust_id, SUM(price) AS totalFROM ordersGROUP BY cust_id
db.orders.aggregate( [ { $group: { _id: "$cust_id", total: { $sum: "$price" } } }] )

각 고유의 cust_id에 대해 price 필드를 합산

SELECT cust_id, SUM(price) AS totalFROM ordersGROUP BY cust_idORDER BY total
db.orders.aggregate( [ { $group: { _id: "$cust_id", total: { $sum: "$price" } } }, { $sort: { total: 1 } }] )

각 고유의 cust_id에 대해 price 필드를 합산(결과는 합계 순으로 정렬)

SELECT cust_id, ord_date, SUM(price) AS totalFROM ordersGROUP BY cust_id, ord_date
db.orders.aggregate( [ { $group: { _id: { cust_id: "$cust_id", ord_date: { $dateToString: { format: "%Y-%m-%d", date: "$ord_date" }} }, total: { $sum: "$price" } } }] )

ord_date 그룹의 각 고유의 cust_id에 대해 price 필드를 합산, 날짜의 시간 부분은 제외

SELECT cust_id, count(*)FROM ordersGROUP BY cust_idHAVING count(*) > 1
db.orders.aggregate( [ { $group: { _id: "$cust_id", count: { $sum: 1 } } }, { $match: { count: { $gt: 1 } } }] )

복수의 기록이 있는 cust_id의 경우, cust_id와 해당 기록 수를 반환

SELECT cust_id, ord_date, SUM(price) AS totalFROM ordersGROUP BY cust_id, ord_dateHAVING total > 250
db.orders.aggregate( [ { $group: { _id: { cust_id: "$cust_id", ord_date: { $dateToString: { format: "%Y-%m-%d", date: "$ord_date" }} }, total: { $sum: "$price" } } }, { $match: { total: { $gt: 250 } } }] )

ord_date 그룹의 각 고유의 cust_id에 대해 price 필드를 합산한 다음 합계가 250을 초과하는 경우에만 반환, 날짜의 시간 부분은 제외

SELECT cust_id, SUM(price) as totalFROM ordersWHERE status = 'A'GROUP BY cust_id
db.orders.aggregate( [ { $match: { status: 'A' } }, { $group: { _id: "$cust_id", total: { $sum: "$price" } } }] )

상태가 A인 각 고유의 cust_id에 대해 A 필드를 합산

SELECT cust_id, SUM(price) as totalFROM ordersWHERE status = 'A'GROUP BY cust_idHAVING total > 250
db.orders.aggregate( [ { $match: { status: 'A' } }, { $group: { _id: "$cust_id", total: { $sum: "$price" } } }, { $match: { total: { $gt: 250 } } }] )

상태가 A인 각 고유의 cust_id에 대해 price 필드를 합산한 다음 합계가 250을 초과하는 경우에만 반환

SELECT cust_id, SUM(li.qty) as qtyFROM orders o, order_lineitem liWHERE li.order_id = o.idGROUP BY cust_id
db.orders.aggregate( [ { $unwind: "$items" }, { $group: { _id: "$cust_id", qty: { $sum: "$items.qty" } } }] )

각 고유의 cust_id에 대해, 주문과 관련된 해당 항목 qty 필드를 합산

SELECT COUNT(*)FROM (SELECT cust_id, ord_date FROM orders GROUP BY cust_id, ord_date) as DerivedTable
db.orders.aggregate( [ { $group: { _id: { cust_id: "$cust_id", ord_date: { $dateToString: { format: "%Y-%m-%d", date: "$ord_date" }} } } }, { $group: { _id: null, count: { $sum: 1 } } }] )

ord_date 그룹의 고유한 cust_id의 수를 계산, 날짜의 시간 부분은 제외

이 페이지 평가하기

이 페이지의 내용