문서 메뉴

문서 홈애플리케이션 개발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

binSizeunit$dateTrunc 계산에 사용되는 기간을 지정합니다.

옵션

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

binSizeunit$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을 사용합니다. 이전 날짜의 경우.

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

binSizeunit$dateTrunc 계산에 사용되는 기간을 지정합니다.

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

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

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

$dateTrunc:

unit 이 다음과 같은 경우:

  • year: $dateTrunc 은 date에 있는 연도에 대해 1 1월 시작에 대한 ISODate 를 반환합니다 .

  • quarter: $dateTrunc 은 date에서 분기의 첫 번째 날의 시작에 대한 ISODate 를 반환합니다 .

    분기는 다음과 같습니다.

    • 1월~3월

    • 4월~6월

    • 7월~9월

    • 10월~12월

  • month: $dateTrunc 은 date에서 해당 월의 첫 번째 날 시작에 대한 ISODate 를 반환합니다 .

  • week: 은 startOfWeek 시작$dateTrunc 날짜 에 대한 ISODate 를 반환합니다.startOfWeek 의 기본값은 일요일입니다.

  • day: $dateTrunc 은 date에서 하루의 시작에 대한 ISODate 를 반환합니다 .

  • hour: $dateTrunc 은 date에서 시간 시작에 대한 ISODate 를 반환합니다 .

  • minute: $dateTrunc 은 date에서 분의 시작에 대한 ISODate 를 반환합니다 .

  • second: $dateTrunc 은 date에서 초의 시작에 대한 ISODate 를 반환합니다 .

unit 이 다음과 같은 경우:

캘리포니아주(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 컬렉션이 사용됩니다.

이 예제에서는 단계에서 를 사용하여 케이크 $dateTrunc $project 판매 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 startOfWeek 가 로 설정된 시간대 에서 orderDate 필드를 2 binSize week America/Los_Angeles 단위 기간으로 자릅니다.Monday

이 예시 출력에서는 잘린 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")
}
]

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

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
}
]
← 날짜 문자열(집계)

이 페이지의 내용