문서 홈 → 애플리케이션 개발 → MongoDB 매뉴얼
expMovingAvg (집계)
정의
버전 5.0에 추가.
단계에서 정의된 $setWindowFields
파티션 의 문서에 적용된 숫자 표현식 의 지수 이동 평균을 반환합니다.
$expMovingAvg
은 $setWindowFields
단계에서만 사용할 수 있습니다.
$expMovingAvg
구문:
{ $expMovingAvg: { input: <input expression>, N: <integer>, alpha: <float> } }
$expMovingAvg
는 다음 필드가 있는 문서를 가져옵니다.
필드 | 설명 |
---|---|
평가할 표현식 을 지정합니다. 숫자가 아닌 표현식은 무시됩니다. | |
행동
N 또는 alpha 를 지정해야 합니다. 둘 다 지정할 수는 없습니다.
$expMovingAvg
은(는) 숫자가 아닌 값, null
값 및 누락된 필드를 무시합니다.
예제
"MDB"
및 "MSFT"
라는 주식의 가격이 포함된 stockPrices
컬렉션을 만듭니다.
db.stockPrices.insertMany( [ { stock: "MDB", date: new Date( "2020-05-18T20:00:00Z" ), price: 13 }, { stock: "MDB", date: new Date( "2020-05-19T20:00:00Z" ), price: 15.4 }, { stock: "MDB", date: new Date( "2020-05-20T20:00:00Z" ), price: 12 }, { stock: "MDB", date: new Date( "2020-05-21T20:00:00Z" ), price: 11.7 }, { stock: "MSFT", date: new Date( "2020-05-18T20:00:00Z" ), price: 82 }, { stock: "MSFT", date: new Date( "2020-05-19T20:00:00Z" ), price: 94 }, { stock: "MSFT", date: new Date( "2020-05-20T20:00:00Z" ), price: 112 }, { stock: "MSFT", date: new Date( "2020-05-21T20:00:00Z" ), price: 97.3 } ] )
다음을 사용한 지수 이동 평균 N
이 예에서는 $expMovingAvg
$setWindowFields
2
단계에서 를 사용하여 으로 설정된 N 을 사용하여 두 개의 과거 문서(예제 문서의 경우 2일)에 가중치를 둔 주가의 지수 이동 평균을 출력합니다.
db.stockPrices.aggregate( [ { $setWindowFields: { partitionBy: "$stock", sortBy: { date: 1 }, output: { expMovingAvgForStock: { $expMovingAvg: { input: "$price", N: 2 } } } } } ] )
예를 들면 다음과 같습니다.
partitionBy: "$stock"
는 collection의 문서를stock
로 파티셔닝합니다."MDB"
및"MSFT"
에 대한 파티션이 있습니다.sortBy: { date: 1 }
각 파티션의 문서를date
을 기준으로 오름차순(1
)으로 정렬하므로, 가장 이른date
이 첫 번째가 됩니다.output
N 이2
로 설정된 주식price
필드에 대한 지수 이동 평균을 반환합니다.입력 문서에는 매일 하나의 문서가 있으며 문서는
date
기준으로 정렬됩니다. 따라서 N 을2
로 설정하면 현재 문서의price
와 이전 문서의price
(사용 가능한 경우)에 지수 이동 평균 공식에서 가장 높은 가중치가 할당됩니다.다음 결과와 같이
price
필드의 지수 이동 평균은expMovingAvgForStocks
이라는 새 필드에 저장됩니다.
{ "_id" : ObjectId("60d11fef833dfeadc8e6286b"), "stock" : "MDB", "date" : ISODate("2020-05-18T20:00:00Z"), "price" : 13, "expMovingAvgForStock" : 13 } { "_id" : ObjectId("60d11fef833dfeadc8e6286c"), "stock" : "MDB", "date" : ISODate("2020-05-19T20:00:00Z"), "price" : 15.4, "expMovingAvgForStock" : 14.6 } { "_id" : ObjectId("60d11fef833dfeadc8e6286d"), "stock" : "MDB", "date" : ISODate("2020-05-20T20:00:00Z"), "price" : 12, "expMovingAvgForStock" : 12.866666666666667 } { "_id" : ObjectId("60d11fef833dfeadc8e6286e"), "stock" : "MDB", "date" : ISODate("2020-05-21T20:00:00Z"), "price" : 11.7, "expMovingAvgForStock" : 12.088888888888889 } { "_id" : ObjectId("60d11fef833dfeadc8e6286f"), "stock" : "MSFT", "date" : ISODate("2020-05-18T20:00:00Z"), "price" : 82, "expMovingAvgForStock" : 82 } { "_id" : ObjectId("60d11fef833dfeadc8e62870"), "stock" : "MSFT", "date" : ISODate("2020-05-19T20:00:00Z"), "price" : 94, "expMovingAvgForStock" : 90 } { "_id" : ObjectId("60d11fef833dfeadc8e62871"), "stock" : "MSFT", "date" : ISODate("2020-05-20T20:00:00Z"), "price" : 112, "expMovingAvgForStock" : 104.66666666666667 } { "_id" : ObjectId("60d11fef833dfeadc8e62872"), "stock" : "MSFT", "date" : ISODate("2020-05-21T20:00:00Z"), "price" : 97.3, "expMovingAvgForStock" : 99.75555555555556 }
다음을 사용한 지수 이동 평균 alpha
이 예제에서는 $expMovingAvg
$setWindowFields
단계에서 0.75
를 사용하여 로 설정된 알파 를 사용하여 주가의 지수 이동 평균을 출력합니다.
db.stockPrices.aggregate( [ { $setWindowFields: { partitionBy: "$stock", sortBy: { date: 1 }, output: { expMovingAvgForStock: { $expMovingAvg: { input: "$price", alpha: 0.75 } } } } } ] )
예를 들면 다음과 같습니다.
partitionBy: "$stock"
는 collection의 문서를stock
로 파티셔닝합니다."MDB"
및"MSFT"
에 대한 파티션이 있습니다.sortBy: { date: 1 }
각 파티션의 문서를date
을 기준으로 오름차순(1
)으로 정렬하므로, 가장 이른date
이 첫 번째가 됩니다.output
다음 결과와 같이 이라는 새 필드에서 주가에expMovingAvgForStock
대한0.75
지수 이동 평균을 설정합니다. 지수 이동 평균 공식 에서 알파 값은 로 설정됩니다.
{ "_id" : ObjectId("60d11fef833dfeadc8e6286b"), "stock" : "MDB", "date" : ISODate("2020-05-18T20:00:00Z"), "price" : 13, "expMovingAvgForStock" : 13 } { "_id" : ObjectId("60d11fef833dfeadc8e6286c"), "stock" : "MDB", "date" : ISODate("2020-05-19T20:00:00Z"), "price" : 15.4, "expMovingAvgForStock" : 14.8 } { "_id" : ObjectId("60d11fef833dfeadc8e6286d"), "stock" : "MDB", "date" : ISODate("2020-05-20T20:00:00Z"), "price" : 12, "expMovingAvgForStock" : 12.7 } { "_id" : ObjectId("60d11fef833dfeadc8e6286e"), "stock" : "MDB", "date" : ISODate("2020-05-21T20:00:00Z"), "price" : 11.7, "expMovingAvgForStock" : 11.95 } { "_id" : ObjectId("60d11fef833dfeadc8e6286f"), "stock" : "MSFT", "date" : ISODate("2020-05-18T20:00:00Z"), "price" : 82, "expMovingAvgForStock" : 82 } { "_id" : ObjectId("60d11fef833dfeadc8e62870"), "stock" : "MSFT", "date" : ISODate("2020-05-19T20:00:00Z"), "price" : 94, "expMovingAvgForStock" : 91 } { "_id" : ObjectId("60d11fef833dfeadc8e62871"), "stock" : "MSFT", "date" : ISODate("2020-05-20T20:00:00Z"), "price" : 112, "expMovingAvgForStock" : 106.75 } { "_id" : ObjectId("60d11fef833dfeadc8e62872"), "stock" : "MSFT", "date" : ISODate("2020-05-21T20:00:00Z"), "price" : 97.3, "expMovingAvgForStock" : 99.6625 }