정의
버전 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
이 예시에서는 $setWindowFields 단계의 $expMovingAvg를 사용하여 두 기록 문서 (예시 문서의 경우 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이 첫 번째가 됩니다.outputN 이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
이 예제에서는 $setWindowFields 단계에서 $expMovingAvg를 사용하여 알파를 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 }