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

집계 파이프라인 지원

차트 를 렌더링하는 데 필요한 데이터를 가져오기 위해 Charts 는 MongoDB 집계 파이프라인을 만들고 MongoDB database 서버 에서 파이프라인 을 실행합니다. 파이프라인 은 여러 단계로 구성되며, 각 단계는 차트 작성자가 지정한 다양한 설정을 기반으로 생성됩니다.

이 문서 에서는 다양한 차트 빌더 설정을 사용하여 집계 파이프라인을 구성하는 방법을 설명합니다. 오른쪽 상단에 있는 차트 빌더의 줄임표 드롭다운에서 View Aggregation Pipeline 옵션을 선택하여 차트 를 만드는 데 사용된 파이프라인 을 볼 수 있습니다.

Atlas Charts 는 다음 세그먼트로 구성된 파이프라인 을 순서대로 구성합니다.

참고

차트 를 만들 때 이전 차트 세그먼트의 전부는 아니지만 일부를 구성할 수 있습니다. Charts 는 집계 파이프라인 을 생성할 때 지정되지 않은 세그먼트를 건너뜁니다.

다음 차트는 한 사무용품 회사의 총 판매 금액을 구매 방법별로 분류한 것입니다. 데이터 collection의 각 문서는 단일 판매를 나타냅니다.

이 차트를 예로 사용하여 위의 각 설정에 대한 사양이 Atlas Charts에서 생성된 집계 파이프라인을 어떻게 변경하는지 살펴보겠습니다.

필터가 없는 집계 파이프라인 예시입니다.
클릭하여 확대

Data Source 파이프라인, Query 막대 쿼리, 계산된 필드 및 필터를 Filter 창에 추가하지 않은 경우 Atlas Charts는 다음과 같은 집계 파이프라인을 생성합니다.

1{
2 "$addFields": { // Encoding
3 "__alias_0": {
4 "$sum": "$items.price"
5 }
6 }
7},
8{
9 "$group": {
10 "_id": {
11 "__alias_1": "$purchaseMethod"
12 },
13 "__alias_0": {
14 "$sum": "$__alias_0"
15 }
16 }
17},
18{
19 "$project": {
20 "_id": 0,
21 "__alias_1": "$_id.__alias_1",
22 "__alias_0": 1
23 }
24},
25{
26 "$project": {
27 "x": "$__alias_1",
28 "y": "$__alias_0",
29 "_id": 0
30 }
31},
32
33{
34 "$addFields": { // Sorting
35 "__agg_sum": {
36 "$sum": [
37 "$y"
38 ]
39 }
40 }
41},
42{
43 "$sort": {
44 "__agg_sum": -1
45 }
46},
47{
48 "$project": {
49 "__agg_sum": 0
50 }
51},
52{
53 "$limit": 5000
54}

이 점의 파이프라인은 Encode 패널의 그룹, 기본 정렬 순서 단계, 최대 문서 제한(Atlas Charts에서 5000개로 설정)으로 구성됩니다.

아래 쿼리는 saleDate 가 items 배열에 요소가 5개 이상 있고 January 1, 2017 이상인 문서로만 표시되는 문서를 제한합니다. items 은(는) 각 요소가 판매 중에 구매한 품목인 배열입니다.

쿼리:

{
$and: [
{
saleDate: { $gte: new Date("2017-01-01") }
},
{
'items.4': { $exists: true }
} ]
}

Query 표시줄에 위 쿼리를 적용하면 다음과 같은 차트와 집계 파이프라인이 생성됩니다.

쿼리가 포함된 집계 파이프라인 예시입니다.
클릭하여 확대

집계 파이프라인:

1{
2 "$match": { // Query
3 "$and": [
4 {
5 "saleDate": {
6 "$gte": {
7 "$date": "2017-01-01T00:00:00Z"
8 }
9 }
10 },
11 {
12 "items.4": {
13 "$exists": true
14 }
15 }
16 ]
17 }
18},
19{
20 "$addFields": {
21 "__alias_0": {
22 "$sum": "$items.price"
23 }
24 }
25},
26{
27 "$group": {
28 "_id": {
29 "__alias_1": "$purchaseMethod"
30 },
31 "__alias_0": {
32 "$sum": "$__alias_0"
33 }
34 }
35},
36{
37 "$project": {
38 "_id": 0,
39 "__alias_1": "$_id.__alias_1",
40 "__alias_0": 1
41 }
42},
43{
44 "$project": {
45 "x": "$__alias_1",
46 "y": "$__alias_0",
47 "_id": 0
48 }
49},
50{
51 "$addFields": {
52 "__agg_sum": {
53 "$sum": [
54 "$y"
55 ]
56 }
57 }
58},
59{
60 "$sort": {
61 "__agg_sum": -1
62 }
63},
64{
65 "$project": {
66 "__agg_sum": 0
67 }
68},
69{
70 "$limit": 5000
71}

이제 쿼리가 적용된 상태로 집계 파이프라인이 시작되고 Encode 패널과 최대 문서 제한에서 선택한 그룹이 그 뒤를 이습니다.

생성된 총 수익을 구매 방법별로 분류하여 표시하도록 차트를 변경할 수도 있습니다. 이 작업을 수행하기 위해 가격에 수량을 곱하여 총 수익을 계산하는 계산된 필드를 생성하겠습니다. 위의 쿼리에 이 새 계산된 필드를 추가하면 다음과 같은 차트와 파이프라인이 생성됩니다.

계산된 필드 표현식:

계산된 필드가 있는 집계 파이프라인 예시입니다.
클릭하여 확대

집계 파이프라인:

1{
2 "$match": {
3 "$and": [
4 {
5 "saleDate": {
6 "$gte": {
7 "$date": "2017-01-01T00:00:00Z"
8 }
9 }
10 },
11 {
12 "items.4": {
13 "$exists": true
14 }
15 }
16 ]
17 }
18},
19{
20 "$addFields": { // Calculated Field
21 "revenue": {
22 "$reduce": {
23 "input": "$items",
24 "initialValue": 0,
25 "in": {
26 "$sum": [
27 "$$value",
28 {
29 "$multiply": [
30 "$$this.price",
31 "$$this.quantity"
32 ]
33 }
34 ]
35 }
36 }
37 }
38 }
39},
40{
41 "$group": {
42 "_id": {
43 "__alias_0": "$purchaseMethod"
44 },
45 "__alias_1": {
46 "$sum": "$revenue"
47 }
48 }
49},
50{
51 "$project": {
52 "_id": 0,
53 "__alias_0": "$_id.__alias_0",
54 "__alias_1": 1
55 }
56},
57{
58 "$project": {
59 "x": "$__alias_0",
60 "y": "$__alias_1",
61 "_id": 0
62 }
63},
64{
65 "$addFields": {
66 "__agg_sum": {
67 "$sum": [
68 "$y"
69 ]
70 }
71 }
72},
73{
74 "$sort": {
75 "__agg_sum": -1
76 }
77},
78{
79 "$project": {
80 "__agg_sum": 0
81 }
82},
83{
84 "$limit": 5000
85}

이제 업데이트된 파이프라인의 Query 표시줄에 적용된 쿼리 바로 아래에 계산된 필드가 포함되며 나머지 구성 요소의 순서는 변경되지 않습니다.

이 차트는 뉴욕 위치에서 이루어진 매장 판매만 선택하도록 Filter 창에 필터를 추가하여 더욱 세분화할 수 있습니다. 이 필터를 추가하면 다음과 같은 차트와 집계 파이프라인이 생성됩니다.

필터가 있는 집계 파이프라인 예시.
클릭하여 확대

집계 파이프라인:

1{
2 "$match": {
3 "$and": [
4 {
5 "saleDate": {
6 "$gte": {
7 "$date": "2017-01-01T00:00:00Z"
8 }
9 }
10 },
11 {
12 "items.4": {
13 "$exists": true
14 }
15 }
16 ]
17 }
18},
19{
20 "$addFields": {
21 "revenue": {
22 "$reduce": {
23 "input": "$items",
24 "initialValue": 0,
25 "in": {
26 "$sum": [
27 "$$value",
28 {
29 "$multiply": [
30 "$$this.price",
31 "$$this.quantity"
32 ]
33 }
34 ]
35 }
36 }
37 }
38 }
39},
40{
41 "$match": { // Filter
42 "storeLocation": {
43 "$in": [
44 "New York"
45 ]
46 }
47 }
48},
49{
50 "$group": {
51 "_id": {
52 "__alias_0": "$purchaseMethod"
53 },
54 "__alias_1": {
55 "$sum": "$revenue"
56 }
57 }
58},
59{
60 "$project": {
61 "_id": 0,
62 "__alias_0": "$_id.__alias_0",
63 "__alias_1": 1
64 }
65},
66{
67 "$project": {
68 "x": "$__alias_0",
69 "y": "$__alias_1",
70 "_id": 0
71 }
72},
73{
74 "$addFields": {
75 "__agg_sum": {
76 "$sum": [
77 "$y"
78 ]
79 }
80 }
81},
82{
83 "$sort": {
84 "__agg_sum": -1
85 }
86},
87{
88 "$project": {
89 "__agg_sum": 0
90 }
91},
92{
93 "$limit": 5000
94}

이제 파이프라인은 계산된 필드 바로 아래에 storeLocation 필터를 포함하며 나머지 구성 요소의 순서는 변경되지 않습니다.