$dateToParts (애그리게이션)
정의
$dateToParts
버전 3.6에 새로 추가되었습니다.
주어진 BSON Date 값의 구성 부분이 개별 속성으로 포함된 문서를 반환합니다. 반환되는 속성은
year
,month
,day
,hour
,minute
,second
,millisecond
입니다.속성을 로 설정하여
iso8601
true
ISO 주 날짜 를 나타내는 부분을 반환할 수 있습니다. 대신. 그러면 속성이isoWeekYear
,isoWeek
,isoDayOfWeek
,hour
,minute
,second
및millisecond
인 문서가 반환됩니다.$dateToParts
표현식의 구문은 다음과 같습니다.{ $dateToParts: { 'date' : <dateExpression>, 'timezone' : <timezone>, 'iso8601' : <boolean> } } $dateToParts
는 다음 필드가 포함된 문서를 사용합니다.필드필수/선택 사항설명date
필수 사항timezone
옵션날짜 서식을 지정하는 데 사용할 표준 시간대입니다. 기본적으로
$dateToParts
는 UTC를 사용합니다.<timezone>
값이 다음 중 하나인 문자열로 계산되는 모든 표현식이 될 수 있습니다.Olson Timezone Identifier(예:
"Europe/London"
또는"America/New_York"
) 또는형식의 UTC 오프셋입니다.
+/-[hh]:[mm]
, 예:"+04:45"
, 또는+/-[hh][mm]
, 예:"-0530"
, 또는+/-[hh]
예:"+03"
.
표현식에 대한 자세한 내용은 표현식을 참조하세요 .
iso8601
옵션true
로 설정하면 출력 문서가 ISO 주 날짜 필드를 사용하도록 수정됩니다. 기본값은false
입니다.
행동
<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 }
예제
다음 문서가 포함된 collection을 고려합니다:sales
{ "_id" : 2, "item" : "abc", "price" : 10, "quantity" : 2, "date" : ISODate("2017-01-01T01:29:09.123Z") }
다음 집계는 $dateToParts
(을)를 사용하여 date
필드의 구성 부분을 포함하는 문서를 반환합니다.
db.sales.aggregate([ { $project: { date: { $dateToParts: { date: "$date" } }, date_iso: { $dateToParts: { date: "$date", iso8601: true } }, date_timezone: { $dateToParts: { date: "$date", timezone: "America/New_York" } } } }])
이 연산은 다음과 같은 결과를 반환합니다.
{ "_id" : 2, "date" : { "year" : 2017, "month" : 1, "day" : 1, "hour" : 1, "minute" : 29, "second" : 9, "millisecond" : 123 }, "date_iso" : { "isoWeekYear" : 2016, "isoWeek" : 52, "isoDayOfWeek" : 7, "hour" : 1, "minute" : 29, "second" : 9, "millisecond" : 123 }, "date_timezone" : { "year" : 2016, "month" : 12, "day" : 31, "hour" : 20, "minute" : 29, "second" : 9, "millisecond" : 123 } }