문서 메뉴
문서 홈
/
MongoDB 매뉴얼
/ / /

dateTrunc(집계)

이 페이지의 내용

  • 정의
  • 행동
  • 예제
$dateTrunc

버전 5.0에 추가.

날짜를 자릅니다.

$dateTrunc 구문:

{
$dateTrunc: {
date: <Expression>,
unit: <Expression>,
binSize: <Expression>,
timezone: <tzExpression>,
startOfWeek: <Expression>
}
}
필드
필수/선택 사항
설명
날짜
필수 사항

잘라낼 날짜로, UTC로 지정됩니다.날짜 Date ,Timestamp 또는 ObjectID 로 해석되는표현식 일 수 있습니다.

필수 사항

시간 단위로, 다음 문자열 중 하나로 해석되어야 하는 표현식으로 지정됩니다.

  • year

  • quarter

  • week

  • month

  • day

  • hour

  • minute

  • second

binSize유닛과 함께 $dateTrunc 계산에 사용되는 기간을 지정합니다.

옵션

숫자로 된 시간 값으로, 0이 아닌 양수로 해석되어야 하는 표현식으로 지정됩니다. 기본값은 1입니다.

binSize유닛과 함께 $dateTrunc 계산에 사용되는 기간을 지정합니다.

옵션

$dateTrunc 계산을 위한 시간대입니다. 다음 값 중 하나를 포함하는 문자열로 해석되어야 하는 표현식으로 지정됩니다.

시간대를 제공하지 않으면 $dateTrunc 계산이 UTC로 수행됩니다.

형식
예제
Olson 표준 시간대 ID
  • America/New_York

  • Europe/London

  • GMT

UTC 오프셋
  • +/-[hh]:[mm] (예: +04:45)

  • +/-[hh][mm] (예: -0530)

  • +/-[hh] (예: +03)

옵션

한 주의 시작입니다. 단위week일 때 사용됩니다. 기본값은 Sunday입니다.

startOfWeek는 대소문자를 구분하지 않는 다음과 같은 문자열 중 하나로 리졸브되어야 하는 표현식입니다.

  • monday (또는 mon)

  • tuesday (또는 tue)

  • wednesday (또는 wed)

  • thursday (또는 thu)

  • friday (또는 fri)

  • saturday (또는 sat)

  • sunday (또는 sun)

다음도 참조하세요.

$dateTrunc:

  • 다음과 같은 경우 null을 반환합니다.

    • startOfWeek를 제외한 입력 필드 중 하나라도 누락되었거나 null로 설정된 경우 또는

    • unitweek이고 startOfWeek가 누락되었거나 null로 설정된 경우.

  • 1583년 이전 날짜에 대해 1583년 이전 그레고리안 달력을 사용합니다.

  • 일광 절약 시간제를 고려하지만 윤초는 고려하지 않습니다.

binSize유닛과 함께 $dateTrunc 계산에 사용되는 기간을 지정합니다.

예를 들면 다음과 같습니다.

  • binSize1이고 단위hour인 경우 기간은 1시간입니다. 날짜의 경우 2021-03-20T11:30:05Z, $dateTrunc2021-03-20T11:00:00Z를 반환합니다.

  • binSize2이고 unithour인 경우 기간은 2시간입니다. date 2021-03-20T11:30:05Z의 경우 $dateTrunc2021-03-20T10:00:00Z를 반환합니다.

$dateTrunc:

  • $dateTrunc 계산 시간을 지정된 시간 유닛BinSize 기간으로 나눕니다.

    시간의 기간은 기준 일자부터 시작하며, 이는 단위에 의해 결정됩니다. 단위 가 다음과 같은 경우:

    • week 이외의 문자열인 경우, $dateTrunc2000-01-01T00:00:00.00Z의 참고 날짜를 사용합니다. 예를 들어 binSize10이고 unityear인 경우 기간 예시는 다음과 같습니다.

      • 2000-01-01T00:00:00.00Z

      • 2010-01-01T00:00:00.00Z

      • 2020-01-01T00:00:00.00Z

    • week와 같은 경우, $dateTrunc2000-01-01 또는 이후인 주의 첫 번째 날로 설정된 참조 날짜를 사용합니다. 첫 번째 날은 startOfWeek를 사용하여 설정합니다(기본값: 일요일).

  • 날짜가 속한 기간의 하한을 반환합니다. 경계는 ISODate로 반환됩니다. binSize 필드가 1인 경우, $dateTrunc는 반환된 ISODate에서 가장 덜 중요한 부분(단위에 의해 결정)을 0으로 설정하고 나머지 ISODate를 동일하게 유지합니다.

단위 가 다음과 같은 경우:

단위 가 다음과 같은 경우:

  • week 이외의 문자열인startOfWeek는 무시됩니다.

  • week과 동일하며 startOfWeek는 다음과 같습니다.

    • 지정됨: $dateTruncstartOfWeek를 계산할 주의 첫 번째 요일로 사용합니다.

    • 생략됨: $dateTrunc는 일요일을 계산의 요일 시작일로 사용합니다.

캘리포니아주(CA)와 워싱턴주(WA)의 케이크 판매량이 포함된 cakeSales collection을 생성합니다.

db.cakeSales.insertMany( [
{ _id: 0, type: "chocolate", orderDate: new Date("2020-05-18T14:10:30Z"),
state: "CA", price: 13, quantity: 120 },
{ _id: 1, type: "chocolate", orderDate: new Date("2021-03-20T11:30:05Z"),
state: "WA", price: 14, quantity: 140 },
{ _id: 2, type: "vanilla", orderDate: new Date("2021-01-11T06:31:15Z"),
state: "CA", price: 12, quantity: 145 },
{ _id: 3, type: "vanilla", orderDate: new Date("2020-02-08T13:13:23Z"),
state: "WA", price: 13, quantity: 104 },
{ _id: 4, type: "strawberry", orderDate: new Date("2019-05-18T16:09:01Z"),
state: "CA", price: 41, quantity: 162 },
{ _id: 5, type: "strawberry", orderDate: new Date("2019-01-08T06:12:03Z"),
state: "WA", price: 43, quantity: 134 }
] )

다음 예시에서는 cakeSales 컬렉션이 사용됩니다.

이 예시에서는 $project 단계에서 $dateTrunc를 사용하여 케이크 판매 orderDate 값을 2주로 자릅니다.

db.cakeSales.aggregate( [
{
$project: {
_id: 1,
orderDate: 1,
truncatedOrderDate: {
$dateTrunc: {
date: "$orderDate", unit: "week", binSize: 2,
timezone: "America/Los_Angeles", startOfWeek: "Monday"
}
}
}
}
] )

예를 들면 다음과 같습니다.

  • $project 출력에 _id, orderDate, truncatedOrderDate 필드가 포함됩니다.

  • $dateTrunc orderDate 필드를 StartOfWeekMonday로 설정된 America/Los_Angeles 시간대2 binSize week 단위 시간으로 자릅니다.

이 예시 출력에서는 잘린 orderDatetruncatedOrderDate 필드에 표시됩니다.

[
{
_id: 0,
orderDate: ISODate("2020-05-18T14:10:30.000Z"),
truncatedOrderDate: ISODate("2020-05-11T07:00:00.000Z")
},
{
_id: 1,
orderDate: ISODate("2021-03-20T11:30:05.000Z"),
truncatedOrderDate: ISODate("2021-03-15T07:00:00.000Z")
},
{
_id: 2,
orderDate: ISODate("2021-01-11T06:31:15.000Z"),
truncatedOrderDate: ISODate("2021-01-04T08:00:00.000Z")
},
{
_id: 3,
orderDate: ISODate("2020-02-08T13:13:23.000Z"),
truncatedOrderDate: ISODate("2020-02-03T08:00:00.000Z")
},
{
_id: 4,
orderDate: ISODate("2019-05-18T16:09:01.000Z"),
truncatedOrderDate: ISODate("2019-05-13T07:00:00.000Z")
},
{
_id: 5,
orderDate: ISODate("2019-01-08T06:12:03.000Z"),
truncatedOrderDate: ISODate("2019-01-07T08:00:00.000Z")
}
]

이 예시에서는 $group단계에서 $dateTrunc를 사용하여 케이크 판매 orderDate 값을 6개월로 자르고 quantity 값의 합계를 반환합니다.

db.cakeSales.aggregate( [
{
$group: {
_id: {
truncatedOrderDate: {
$dateTrunc: {
date: "$orderDate", unit: "month", binSize: 6
}
}
},
sumQuantity: { $sum: "$quantity" }
}
}
] )

예를 들면 다음과 같습니다.

  • $group 은(는) _id 필드를 truncatedOrderDate 필드로 설정하여 cakeSales 문서를 그룹화하고 $sum을 사용하여 각 그룹에 대한 quantity 값의 합계를 반환합니다.

  • $dateTrunc orderDate 필드를 6 binSize month 단위 기간으로 잘라냅니다.

이 예제의 출력에서는 잘린 orderDatetruncatedOrderDate 필드에 표시되고 quantity 합계가 sumQuantity 필드에 표시됩니다.

[
{
_id: { truncatedOrderDate: ISODate("2020-01-01T00:00:00.000Z") },
sumQuantity: 224
},
{
_id: { truncatedOrderDate: ISODate("2021-01-01T00:00:00.000Z") },
sumQuantity: 285
},
{
_id: { truncatedOrderDate: ISODate("2019-01-01T00:00:00.000Z") },
sumQuantity: 296
}
]
← 날짜 문자열(집계)

이 페이지의 내용