적분(집계)
정의
버전 5.0에 추가.
각 인접한 문서 세트가 다음을 사용하여 사각형을 형성하는 삼각형 규칙을 사용하여 계산된 곡선 아래 영역의 근사치를 반환합니다.
적분 간격에
$setWindowFields
대한 단계의 sortBy 필드값입니다.
$integral
는 $setWindowFields
스테이지에서만 사용할 수 있습니다.
$integral
구문:
{ $integral: { input: <expression>, unit: <time unit> } }
$integral
는 이러한 필드가 있는 문서 를 가져옵니다.
행동
window 를 생략하면 상한 및 하한이 제한되지 않는 기본 창이 사용됩니다.
예시
미터 장치로 30초 간격으로 측정한 킬로와트 단위의 전력 사용량을 포함하는 powerConsumption
컬렉션을 만듭니다.
db.powerConsumption.insertMany( [ { powerMeterID: "1", timeStamp: new Date( "2020-05-18T14:10:30Z" ), kilowatts: 2.95 }, { powerMeterID: "1", timeStamp: new Date( "2020-05-18T14:11:00Z" ), kilowatts: 2.7 }, { powerMeterID: "1", timeStamp: new Date( "2020-05-18T14:11:30Z" ), kilowatts: 2.6 }, { powerMeterID: "1", timeStamp: new Date( "2020-05-18T14:12:00Z" ), kilowatts: 2.98 }, { powerMeterID: "2", timeStamp: new Date( "2020-05-18T14:10:30Z" ), kilowatts: 2.5 }, { powerMeterID: "2", timeStamp: new Date( "2020-05-18T14:11:00Z" ), kilowatts: 2.25 }, { powerMeterID: "2", timeStamp: new Date( "2020-05-18T14:11:30Z" ), kilowatts: 2.75 }, { powerMeterID: "2", timeStamp: new Date( "2020-05-18T14:12:00Z" ), kilowatts: 2.82 } ] )
이 예에서는 $setWindowFields
단계에서
$integral
을 사용하여 각 미터 장치에서 측정한 에너지 소비량을 킬로와트시 단위로 출력합니다.
db.powerConsumption.aggregate( [ { $setWindowFields: { partitionBy: "$powerMeterID", sortBy: { timeStamp: 1 }, output: { powerMeterKilowattHours: { $integral: { input: "$kilowatts", unit: "hour" }, window: { range: [ "unbounded", "current" ], unit: "hour" } } } } } ] )
예시:
partitionBy: "$powerMeterID"
은powerMeterID
을 기준으로 문서를 파티셔닝합니다.
sortBy: { timeStamp: 1 }
은 각 파티션의 문서를timeStamp
씩 오름차순(1
)으로 정렬하므로가장 이른
timeStamp
이 먼저 정렬됩니다.output
은(는) 범위창에서 실행되는
$integral
을(를) 사용하여
powerMeterKilowattHours
(이)라는 새 필드에 정수 계열 값을 설정합니다.
이 예제 출력에서는 미터 1과 미터 2로 측정한 에너지 소비가 powerMeterKilowattHours
필드에 표시됩니다.
{ "_id" : ObjectId("60cbdc3f833dfeadc8e62863"), "powerMeterID" : "1", "timeStamp" : ISODate("2020-05-18T14:10:30Z"), "kilowatts" : 2.95, "powerMeterKilowattHours" : 0 } { "_id" : ObjectId("60cbdc3f833dfeadc8e62864"), "powerMeterID" : "1", "timeStamp" : ISODate("2020-05-18T14:11:00Z"), "kilowatts" : 2.7, "powerMeterKilowattHours" : 0.023541666666666666 } { "_id" : ObjectId("60cbdc3f833dfeadc8e62865"), "powerMeterID" : "1", "timeStamp" : ISODate("2020-05-18T14:11:30Z"), "kilowatts" : 2.6, "powerMeterKilowattHours" : 0.045625 } { "_id" : ObjectId("60cbdc3f833dfeadc8e62866"), "powerMeterID" : "1", "timeStamp" : ISODate("2020-05-18T14:12:00Z"), "kilowatts" : 2.98, "powerMeterKilowattHours" : 0.068875 } { "_id" : ObjectId("60cbdc3f833dfeadc8e62867"), "powerMeterID" : "2", "timeStamp" : ISODate("2020-05-18T14:10:30Z"), "kilowatts" : 2.5, "powerMeterKilowattHours" : 0 } { "_id" : ObjectId("60cbdc3f833dfeadc8e62868"), "powerMeterID" : "2", "timeStamp" : ISODate("2020-05-18T14:11:00Z"), "kilowatts" : 2.25, "powerMeterKilowattHours" : 0.019791666666666666 } { "_id" : ObjectId("60cbdc3f833dfeadc8e62869"), "powerMeterID" : "2", "timeStamp" : ISODate("2020-05-18T14:11:30Z"), "kilowatts" : 2.75, "powerMeterKilowattHours" : 0.040625 } { "_id" : ObjectId("60cbdc3f833dfeadc8e6286a"), "powerMeterID" : "2", "timeStamp" : ISODate("2020-05-18T14:12:00Z"), "kilowatts" : 2.82, "powerMeterKilowattHours" : 0.06383333333333334 }
다음도 참조하세요.
IOT 전력 소비에 대한 추가 예시는 실용적인 MongoDB 집계 e-book을 참조하세요.