AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
Docs Menu

적분 (표현식 연산자)

버전 5.0의 신규 항목입니다.

$integral

각 인접한 문서 세트가 다음을 사용하여 사각형을 형성하는 삼각형 규칙을 사용하여 계산된 곡선 아래 영역의 근사치를 반환합니다.

$integral is only available in the $setWindowFields stage.

$integral 구문:

{
$integral: {
input: <expression>,
unit: <time unit>
}
}

$integral (은)는 다음 필드가 있는 문서를 가져옵니다.

필드
설명

평가할 표현식 을 지정합니다. 숫자를 반환하는 표현식을 제공해야 합니다.

시간 단위를 지정하는 string입니다. 다음 문자열 중 하나를 사용합니다.

  • "week"

  • "day"

  • "hour"

  • "minute"

  • "second"

  • "millisecond"

SortBy 필드가 날짜가 아닌 경우 unit을 생략해야 합니다. unit을 지정하는 경우 SortBy 필드에 날짜를 지정해야 합니다.

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이 첫 번째가 됩니다.

  • output sets the kilowatts integral value in a new field called powerMeterKilowattHours using $integral that 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 $integral unit is set to "hour" for the timeStamp field, which means $integral returns the kilowatt-hours energy consumption.

    • The window contains documents between an unbounded lower limit and the current document in the output. This means $integral returns 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 집계 전자책을 참조하세요.

이 페이지 평가하기

이 페이지의 내용