티스토리 뷰
$dateToString 이란?
dateToString는 mongodb의 date object를 사용자가 지정한 포맷으로 변환시켜 주는 몽고디비 operator이다. aggregate 구문에서 $project와 함께 사용된다.
dateToString 사용법
$project : {
formattedDate : {$dateToString : { format : "xxxxxxx", date : "$value"}}
}
주로 위 포맷으로 aggregate project 구문 안에서 dateToString을 사용할 수 있으며, format에 지정한 형식으로 date object인 $value 값을 사용자가 임의로 네이밍한 값인 formattedDate 값으로 뽑을 수 있다.
예를 들어, 아래의 도큐먼트 정보를 가질 때
{ "value" : ISODate("2014-01-07T08:15:39.736Z") }
db.collection.aggregate([ { $project: { formattedDate : { $dateToString: { format: "포맷", date: "$value" } } } } ]) |
를 실행할 때에 project 된 결괏값인 formattedDate 은
포맷이 %Y-%m-%d 라면 "2014-01-07" 이 되고
포맷이 %Y%m%d 라면 "20140107" 이고
포맷이 %m/%d/%Y 라면 "01/07/2014" 이 되는 것이다.
한마디로 date object의 정보에서 필요한 것만 뽑아서 원하는 형식으로 보여주는 것이 가능하다는 것이다.
포맷 지정자 classifier
Specifiers
|
Description
|
Possible Values
|
%d
|
Day of Month (2 digits, zero padded)
|
01-31
|
%G
|
Year in ISO 8601 format
|
0000-9999
|
%H
|
Hour (2 digits, zero padded, 24-hour clock)
|
00-23
|
%j
|
Day of year (3 digits, zero padded)
|
001-366
|
%L
|
Millisecond (3 digits, zero padded)
|
000-999
|
%m
|
Month (2 digits, zero padded)
|
01-12
|
%M
|
Minute (2 digits, zero padded)
|
00-59
|
%S
|
Second (2 digits, zero padded)
|
00-60
|
%w
|
Day of week (1-Sunday, 7-Saturday)
|
1-7
|
%u
|
Day of week number in ISO 8601 format (1-Monday, 7-Sunday)
|
1-7
|
%U
|
Week of year (2 digits, zero padded)
|
00-53
|
%V
|
Week of Year in ISO 8601 format
|
01-53
|
%Y
|
Year (4 digits, zero padded)
|
0000-9999
|
%z
|
The timezone offset from UTC.
|
+/-[hh][mm]
|
%Z
|
The minutes offset from UTC as a number. For example, if the timezone offset (+/-[hhmm]) was +0445, the minutes offset is +285.
|
+/-mmm
|
%%
|
Percent Character as a Literal
|
%
|
format, date 이외에도 timezone, onNull과 같은 옵션들도 있으니 추가 사항은 mongodb 공식 문서에서 확인할 수 있다.
예제
아래는 몽고디비 공식 도큐먼트에 나와있는 예제이다.
{ "_id" : 1, "item" : "abc", "price" : 10, "quantity" : 2, "date" : ISODate("2014-01-01T08:15:39.736Z") } |
위와 같은 document를 가질 때
db.sales.aggregate( [ { $project: { yearMonthDayUTC: { $dateToString: { format: "%Y-%m-%d", date: "$date" } }, timewithOffsetNY: { $dateToString: { format: "%H:%M:%S:%L%z", date: "$date", timezone: "America/New_York"} }, timewithOffset430: { $dateToString: { format: "%H:%M:%S:%L%z", date: "$date", timezone: "+04:30" } }, minutesOffsetNY: { $dateToString: { format: "%Z", date: "$date", timezone: "America/New_York" } }, minutesOffset430: { $dateToString: { format: "%Z", date: "$date", timezone: "+04:30" } } } } ] ) |
위의 dateToString 포맷으로 project한 결괏값은 아래와 같다.
{ "_id" : 1, "yearMonthDayUTC" : "2014-01-01", "timewithOffsetNY" : "03:15:39:736-0500", "timewithOffset430" : "12:45:39:736+0430", "minutesOffsetNY" : "-300", "minutesOffset430" : "270" } |
[참조]
https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateToString/
'괴발개발' 카테고리의 다른 글
[이쁜 무료 폰트 추천] suite 스위트체 by SUNN, 폰트 윈도우/맥 설치하는 법 (1) | 2023.06.12 |
---|---|
[Mockito] TC TooManyActualInvocations 에러 해결 (0) | 2022.06.10 |
[git] 로컬 브랜치로 리모트 다른 브랜치 덮어버리기 (0) | 2022.01.09 |
[git] 로컬 브랜치 변경사항 다 버리고 원격 브랜치로 덮어쓰기 (0) | 2022.01.09 |
[클린아키텍처|요약정리] 31/32장 웹과 프레임워크는 세부사항이다. (0) | 2021.12.15 |