문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

$dateFromParts (애그리게이션)

이 페이지의 내용

  • 정의
  • 행동
  • 예제
$dateFromParts

버전 3.6에 새로 추가되었습니다.

날짜의 구성 속성이 주어지면 데이터 객체를 생성하고 반환합니다.

$dateFromParts 표현식의 구문은 다음과 같습니다.

{
$dateFromParts : {
'year': <year>, 'month': <month>, 'day': <day>,
'hour': <hour>, 'minute': <minute>, 'second': <second>,
'millisecond': <ms>, 'timezone': <tzExpression>
}
}

ISO 주 날짜 에 구성 날짜 필드를 지정할 수도 있습니다. 다음 구문을 사용하여 형식을 지정합니다.

{
$dateFromParts : {
'isoWeekYear': <year>, 'isoWeek': <week>, 'isoDayOfWeek': <day>,
'hour': <hour>, 'minute': <minute>, 'second': <second>,
'millisecond': <ms>, 'timezone': <tzExpression>
}
}

$dateFromParts 는 다음 필드가 있는 문서를 사용합니다.

중요

$dateFromParts 입력 문서를 구성할 때 캘린더 날짜와 ISO 주 날짜 필드 사용을 결합할 수 없습니다.

필드
필수/선택 사항
설명
year
다음을 사용하지 않는 경우 필수 isoWeekYear

연도 숫자로 평가되는 모든 표현식이 될 수 있습니다.

값 범위: 1~9999

지정된 숫자가 이 범위를 벗어나면 오류가 발생합니다. 이 값의$dateFromParts 하한은 1 입니다.
isoWeekYear
다음을 사용하지 않는 경우 필수 year

ISO 주 날짜 연도 숫자로 평가되는 모든 표현식이 될 수 있습니다.

값 범위: 1~9999

지정된 숫자가 이 범위를 벗어나면 오류가 발생합니다. 이 값의$dateFromParts 하한은 1 입니다.
month
선택 사항 year에서만 사용할 수 있습니다.

월입니다. 숫자로 평가되는 모든 표현식이 될 수 있습니다.

기본값은 1입니다.

값 범위: 1~12

지정된 숫자가 이 범위를 벗어나면 는 날짜$dateFromParts 계산에 차이를 포함합니다. 예제는 값 범위 를 참조하세요.
isoWeek
선택 사항 isoWeekYear에서만 사용할 수 있습니다.

연도의 주입니다. 숫자로 평가되는 모든 표현식이 될 수 있습니다.

기본값은 1입니다.

값 범위: 1~53

지정된 숫자가 이 범위를 벗어나면 는 날짜$dateFromParts 계산에 차이를 포함합니다. 예제는 값 범위 를 참조하세요.
day
선택 사항 year에서만 사용할 수 있습니다.

날짜 숫자로 평가되는 모든 표현식이 될 수 있습니다.

기본값은 1입니다.

값 범위: 1~31

지정된 숫자가 이 범위를 벗어나면 는 날짜$dateFromParts 계산에 차이를 포함합니다. 예제는 값 범위 를 참조하세요.
isoDayOfWeek
선택 사항 isoWeekYear에서만 사용할 수 있습니다.

요일(월요일 1 - 일요일 7)입니다. 숫자로 평가되는 모든 표현식이 될 수 있습니다.

기본값은 1입니다.

값 범위: 1~7

지정된 숫자가 이 범위를 벗어나면 는 날짜$dateFromParts 계산에 차이를 포함합니다. 예제는 값 범위 를 참조하세요.
hour
옵션

시간 숫자로 평가되는 모든 표현식이 될 수 있습니다.

기본값은 0입니다.

값 범위: 0~23

지정된 숫자가 이 범위를 벗어나면 는 날짜$dateFromParts 계산에 차이를 포함합니다. 예제는 값 범위 를 참조하세요.
minute
옵션

분. 숫자로 평가되는 모든 표현식이 될 수 있습니다.

기본값은 0입니다.

값 범위: 0-59 지정된 숫자가 이 범위를 벗어나면 $dateFromParts 는 날짜 계산에 차이를 포함합니다. 예제는 값 범위 를 참조하세요.

second
옵션

초 숫자로 평가되는 모든 표현식이 될 수 있습니다.

기본값은 0입니다.

값 범위: 0~59

지정된 숫자가 이 범위를 벗어나면 는 날짜$dateFromParts 계산에 차이를 포함합니다. 예제는 값 범위 를 참조하세요.
millisecond
옵션

밀리초 숫자로 평가되는 모든 표현식이 될 수 있습니다.

기본값은 0입니다.

값 범위: 0~999

지정된 숫자가 이 범위를 벗어나면 는 날짜$dateFromParts 계산에 차이를 포함합니다. 예제는 값 범위 를 참조하세요.
timezone
옵션

<timezone> 값이 다음 중 하나인 문자열로 계산되는 모든 표현식이 될 수 있습니다.

  • Olson 표준 시간대 식별자 "Europe/London"(예:"America/New_York" 또는 ), 또는

  • 형식의 UTC 오프셋입니다.

    • +/-[hh]:[mm], 예: "+04:45", 또는

    • +/-[hh][mm], 예: "-0530", 또는

    • +/-[hh]예: "+03".

표현식에 대한 자세한 내용은 표현식을 참조하세요 .

yearisoWeekYear 에 지원되는 값 범위는 1-9999 입니다.

year, isoWeekYeartimezone 이외의 필드에 지정된 값이 유효 범위를 벗어나면 $dateFromParts 은 다른 날짜 부분과의 차이를 포함하거나 빼서 날짜를 계산합니다.

month 필드 값이 14 12 개월(또는 1 연도)의 최대값보다 2 개월 큰 필드 값이 있는 다음 $dateFromParts 표현식을 가정해 보겠습니다.

{ $dateFromParts: { 'year' : 2017, 'month' : 14, 'day': 1, 'hour' : 12 } }

표현식은 year를 1씩 줄이고 month를 2로 설정하여 날짜를 계산하고 다음을 반환합니다.

ISODate("2018-02-01T12:00:00Z")

month 필드 값이 1 월의 최소값보다 1 개월 작은 0 인 다음 $dateFromParts 표현식을 가정해 보겠습니다.

{ $dateFromParts: { 'year' : 2017, 'month' : 0, 'day': 1, 'hour' : 12 } }

표현식은 year을(를) 1씩 줄이고 month을(를) 12로 설정하여 날짜를 계산하여 다음을 반환합니다.

ISODate("2016-12-01T12:00:00Z")

<timezone> 필드에서 Olson 표준 시간대 ID를 사용할 때 MongoDB는 지정된 시간대에 적용 가능한 경우 DST 오프셋을 적용합니다.

예를 들어 sales 다음 문서가 있는 컬렉션을 생각해 보겠습니다.

{
"_id" : 1,
"item" : "abc",
"price" : 20,
"quantity" : 5,
"date" : ISODate("2017-05-20T10:24:51.303Z")
}

다음 애그리게이션은 MongoDB가 Olson 시간대 식별자에 대한 DST 오프셋을 처리하는 방법을 보여 줍니다. 이 예제에서는 $hour$minute 연산자를 사용하여 date 필드의 해당 부분을 반환합니다.

db.sales.aggregate([
{
$project: {
"nycHour": {
$hour: { date: "$date", timezone: "-05:00" }
},
"nycMinute": {
$minute: { date: "$date", timezone: "-05:00" }
},
"gmtHour": {
$hour: { date: "$date", timezone: "GMT" }
},
"gmtMinute": {
$minute: { date: "$date", timezone: "GMT" } },
"nycOlsonHour": {
$hour: { date: "$date", timezone: "America/New_York" }
},
"nycOlsonMinute": {
$minute: { date: "$date", timezone: "America/New_York" }
}
}
}])

이 연산은 다음과 같은 결과를 반환합니다.

{
"_id": 1,
"nycHour" : 5,
"nycMinute" : 24,
"gmtHour" : 10,
"gmtMinute" : 24,
"nycOlsonHour" : 6,
"nycOlsonMinute" : 24
}

다음 애그리게이션은 $dateFromParts 를 사용하여 제공된 입력 필드에서 세 개의 날짜 객체를 구성합니다.

db.sales.aggregate([
{
$project: {
date: {
$dateFromParts: {
'year' : 2017, 'month' : 2, 'day': 8, 'hour' : 12
}
},
date_iso: {
$dateFromParts: {
'isoWeekYear' : 2017, 'isoWeek' : 6, 'isoDayOfWeek' : 3, 'hour' : 12
}
},
date_timezone: {
$dateFromParts: {
'year' : 2016, 'month' : 12, 'day' : 31, 'hour' : 23,
'minute' : 46, 'second' : 12, 'timezone' : 'America/New_York'
}
}
}
}])

이 연산은 다음과 같은 결과를 반환합니다.

{
"_id" : 1,
"date" : ISODate("2017-02-08T12:00:00Z"),
"date_iso" : ISODate("2017-02-08T12:00:00Z"),
"date_timezone" : ISODate("2017-01-01T04:46:12Z")
}
← 날짜 차이(집계)

이 페이지의 내용