정의
버전 5.0의 신규 항목입니다.
각 인접한 문서 세트가 다음을 사용하여 사각형을 형성하는 삼각형 규칙을 사용하여 계산된 곡선 아래 영역의 근사치를 반환합니다.
적분 간격에
$setWindowFields대한 단계의 sortBy 필드값입니다.input field expression result values in
$integralfor the y axis values.
$integral is only available in the $setWindowFields stage.
$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 } ] )
This example uses $integral in the $setWindowFields stage to output the energy consumption in kilowatt-hours measured by each meter device:
db.powerConsumption.aggregate( [ { $setWindowFields: { partitionBy: "$powerMeterID", sortBy: { timeStamp: 1 }, output: { powerMeterKilowattHours: { $integral: { input: "$kilowatts", unit: "hour" }, window: { range: [ "unbounded", "current" ], unit: "hour" } } } } } ] )
예시:
partitionBy: "$powerMeterID"는 collection의 문서를powerMeterID로 파티셔닝합니다.sortBy: { timeStamp: 1 }각 파티션의 문서를timeStamp을 기준으로 오름차순(1)으로 정렬하므로, 가장 이른timeStamp이 첫 번째가 됩니다.outputsets thekilowattsintegral value in a new field calledpowerMeterKilowattHoursusing$integralthat is run in a range window.The input expression is set to
"$kilowatts", which is used for the y axis values in the integral calculation.The window contains documents between an
unboundedlower limit and thecurrentdocument in the output. This means$integralreturns the total kilowatt-hours energy consumption for the documents from the beginning of the partition, which is the first data point in the partition for each power meter, to the timestamp of the current document in the output.
이 예제 출력에서는 미터 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 전력 소비에 대한 추가 예시는 IOT 전력 소비에 대한 추가 예시는 실용적인 MongoDB 집계 전자책을 참조하세요.