AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Docs Menu

$avg (창 함수)

$avg

특정 창 에 있는 값의 평균을 반환합니다.

참고

명확화

이 페이지에서는 창 함수로 사용되는 경우의 $avg에 대해 설명합니다.

다음과 같은 다른 컨텍스트에서도 $avg를 사용할 수 있습니다.

  • $avg (accumulator)는 다양한 입력 문서 수를 기반으로 애그리게이션된 단일 값을 반환합니다.

  • $avg (expression)배열 에 있는 숫자 요소의 평균을 반환합니다.

{
$setWindowFields: {
...
output: {
<field>: {
$avg: <expression>
}
}
}
}

기본값 반환 유형은 더블입니다. 하나 이상의 입력 값이 10진수인 경우 반환 유형은 10진수입니다.

$avg 누락된 값을 포함하여 숫자가 아닌 값을 무시합니다. 모든 입력 값이 숫자가 아닌 경우 $avg은 null을 반환합니다.

캘리포니아주(CA)와 워싱턴주(WA)의 케이크 판매량이 포함된 cakeSales collection을 생성합니다.

db.cakeSales.insertMany( [
{ _id: 0, type: "chocolate", orderDate: new Date("2020-05-18T14:10:30Z"),
state: "CA", price: 13, quantity: 120 },
{ _id: 1, type: "chocolate", orderDate: new Date("2021-03-20T11:30:05Z"),
state: "WA", price: 14, quantity: 140 },
{ _id: 2, type: "vanilla", orderDate: new Date("2021-01-11T06:31:15Z"),
state: "CA", price: 12, quantity: 145 },
{ _id: 3, type: "vanilla", orderDate: new Date("2020-02-08T13:13:23Z"),
state: "WA", price: 13, quantity: 104 },
{ _id: 4, type: "strawberry", orderDate: new Date("2019-05-18T16:09:01Z"),
state: "CA", price: 41, quantity: 162 },
{ _id: 5, type: "strawberry", orderDate: new Date("2019-01-08T06:12:03Z"),
state: "WA", price: 43, quantity: 134 }
] )

이 예시 $avg 창 함수를 사용하여 각 state에 대한 케이크 판매 quantity에 대한 이동 평균을 출력합니다. 각 상태 에 대해 주문의 평균 수량과 이전 모든 주문을 포함하는 필드 각 문서 에 추가합니다.

db.cakeSales.aggregate( [
{
$setWindowFields: {
partitionBy: "$state",
sortBy: { orderDate: 1 },
output: {
averageQuantityForState: {
$avg: "$quantity",
window: {
documents: [ "unbounded", "current" ]
}
}
}
}
}
] )

CA 및 WA의 이동 평균 quantity이 averageQuantityForState 필드 에 표시됩니다.

[
{
_id: 4,
type: 'strawberry',
orderDate: ISODate('2019-05-18T16:09:01.000Z'),
state: 'CA',
price: 41,
quantity: 162,
averageQuantityForState: 162
},
{
_id: 0,
type: 'chocolate',
orderDate: ISODate('2020-05-18T14:10:30.000Z'),
state: 'CA',
price: 13,
quantity: 120,
averageQuantityForState: 141
},
{
_id: 2,
type: 'vanilla',
orderDate: ISODate('2021-01-11T06:31:15.000Z'),
state: 'CA',
price: 12,
quantity: 145,
averageQuantityForState: 142.33333333333334
},
{
_id: 5,
type: 'strawberry',
orderDate: ISODate('2019-01-08T06:12:03.000Z'),
state: 'WA',
price: 43,
quantity: 134,
averageQuantityForState: 134
},
{
_id: 3,
type: 'vanilla',
orderDate: ISODate('2020-02-08T13:13:23.000Z'),
state: 'WA',
price: 13,
quantity: 104,
averageQuantityForState: 119
},
{
_id: 1,
type: 'chocolate',
orderDate: ISODate('2021-03-20T11:30:05.000Z'),
state: 'WA',
price: 14,
quantity: 140,
averageQuantityForState: 126
}
]

앞의 예시에서

  • partitionBy: "$state" 는 collection의 문서를 state로 파티셔닝합니다. CA 및 WA에 대한 파티션이 있습니다.

  • sortBy: { orderDate: 1 } 각 파티션의 문서를 orderDate을 기준으로 오름차순(1)으로 정렬하므로, 가장 이른 orderDate이 첫 번째가 됩니다.

  • output averageQuantityForState 필드 문서 창 에 있는 문서의 이동 평균 quantity 로 설정합니다.

    이 창 unbounded 하한과 출력의 current 문서 사이의 문서가 포함됩니다. 즉, $avg는 파티션의 시작 부분과 현재 문서 (포함) 사이의 문서에 대한 quantity의 이동 평균을 반환합니다.

이 페이지 평가하기

이 페이지의 내용