$dateFromString (집계)
정의
$dateFromString
날짜/시간 문자열을 날짜 객체로 변환합니다.
$dateFromString
표현식의 구문은 다음과 같습니다.{ $dateFromString: { dateString: <dateStringExpression>, format: <formatStringExpression>, timezone: <tzExpression>, onError: <onErrorExpression>, onNull: <onNullExpression> } } $dateFromString
는 다음 필드가 포함된 문서를 사용합니다.필드설명dateString
날짜 객체로 변환할 날짜/시간 문자열입니다. 날짜/시간 형식에 대한 자세한 내용은
Date()
를 참조하세요.연산자에
timezone
옵션을 지정하는 경우dateString
에 구역 정보를 포함하지 마세요.format
선택 사항. 의 날짜 형식
dateString
사양입니다. 는format
이상의 형식 지정자를 포함하는 문자열 리터럴로 평가되는 모든 표현식 일 0 수 있습니다. 사용 가능한 지정자 목록은 서식 지정자를 참조하세요.지정하지 않으면 는
$dateFromString
을"%Y-%m-%dT%H:%M:%S.%LZ"
기본값 형식으로 사용하지만 다양한 형식을 허용하며dateString
가능한 경우 구문 분석을 시도합니다.timezone
선택 사항입니다. 날짜 서식을 지정하는 데 사용할 표준 시간대입니다.
dateString
인수가 '2017-02-08T12:10:40.787Z'와 같은 형식이고 끝의 'Z'가 Zulu 시간(UTC 표준 시간대)을 나타내는 경우timezone
인수를 지정할 수 없습니다.<timezone>
은 다음과 같은 옵션과 이를 평가하는 표현식을 사용할 수 있습니다.Olson 표준 시간대 식별자
"Europe/London"
(예:"America/New_York"
또는 ), 또는형식의 UTC 오프셋입니다.
+/-[hh]:[mm]
, 예:"+04:45"
, 또는+/-[hh][mm]
, 예:"-0530"
, 또는+/-[hh]
, 예:"+03"
, 또는
문자열
"Z"
,"UTC"
또는"GMT"
표현식에 대한 자세한 내용은 표현식 연산자를 참조하세요.
onError
선택 사항. 가
$dateFromString
지정된dateString
onError
을 구문 분석하는 동안 오류가 발생하면 제공된 표현식 의 결과 값을 출력합니다. 이 결과 값은 모든 유형이 가능합니다.onError
를 지정하지$dateFromString
않으면dateString
가 를 구문 분석할 수 없으면 오류가 발생합니다.onNull
선택 사항. 에 제공된
dateString
이 이거나 누락된$dateFromString
경우 제공된null
onNull
표현식 의 결과 값을 출력합니다. 이 결과 값은 모든 유형이 가능합니다.를 지정하지
onNull
않고 가dateString
null
이거나$dateFromString
누락된 경우null
는 을 출력합니다.
행동
예시 | 결과 | ||||
---|---|---|---|---|---|
|
| ||||
|
| ||||
|
| ||||
|
| ||||
|
| ||||
|
| ||||
|
|
형식 지정자
<formatString>
에서 사용할 수 있는 형식 지정자:
지정자 | 설명 | Possible Values |
---|---|---|
| 월 이름 축약형(3자) |
|
| 월 이름 전체 |
|
| 월과 요일(2자리, 제로 패딩) |
|
| ISO 8601 형식의 연도 |
|
| 시(2자리, 제로 패딩, 24시간 시계) |
|
| 1년 기준 일수(3자리, 영숫자) |
|
| 밀리초(3자리, 제로 패딩) |
|
| 월(2자리, 제로 패딩) |
|
| 분(2자리, 제로 패딩) |
|
| 초(2자리, 제로 패딩) |
|
| ISO 8601 형식의 요일 번호(1-월요일, 7-일요일) |
|
| 연도별 주(2자리, 제로 패딩) |
|
| ISO 8601 형식의 연도별 주 |
|
| 정수로 표현된 요일(0-일요일, 6-토요일) |
|
| 연도(4자리, 0 패딩) |
|
| UTC의 표준 시간대 오프셋. |
|
| UTC에서 오프셋된 분을 숫자로 표시합니다. 예를 들어 표준 시간대 오프셋( |
|
| 리터럴로서의 백분율 문자 |
|
예시
날짜 변환하기
날짜가 있는 다음 문서가 포함된 collection logmessages
를 고려해 보겠습니다.
{ _id: 1, date: "2017-02-08T12:10:40.787", timezone: "America/New_York", message: "Step 1: Started" }, { _id: 2, date: "2017-02-08", timezone: "-05:00", message: "Step 1: Ended" }, { _id: 3, message: " Step 1: Ended " }, { _id: 4, date: "2017-02-09", timezone: "Europe/London", message: "Step 2: Started"}, { _id: 5, date: "2017-02-09T03:35:02.055", timezone: "+0530", message: "Step 2: In Progress"}
다음 집계는 $dateFromString을 사용하여 date
값을 날짜 객체로 변환합니다.
db.logmessages.aggregate( [ { $project: { date: { $dateFromString: { dateString: '$date', timezone: 'America/New_York' } } } } ] )
위 집계는 다음 문서를 반환하고 각 date
필드를 동부 표준 시간대로 변환합니다.
{ "_id" : 1, "date" : ISODate("2017-02-08T17:10:40.787Z") } { "_id" : 2, "date" : ISODate("2017-02-08T05:00:00Z") } { "_id" : 3, "date" : null } { "_id" : 4, "date" : ISODate("2017-02-09T05:00:00Z") } { "_id" : 5, "date" : ISODate("2017-02-09T08:35:02.055Z") }
하드 코딩된 인수 대신 문서 필드를 통해 timezone
인수를 제공할 수도 있습니다. 예시:
db.logmessages.aggregate( [ { $project: { date: { $dateFromString: { dateString: '$date', timezone: '$timezone' } } } } ] )
위 집계는 다음 문서를 반환하고 각 date
필드를 해당 UTC 표현으로 변환합니다.
{ "_id" : 1, "date" : ISODate("2017-02-08T17:10:40.787Z") } { "_id" : 2, "date" : ISODate("2017-02-08T05:00:00Z") } { "_id" : 3, "date" : null } { "_id" : 4, "date" : ISODate("2017-02-09T00:00:00Z") } { "_id" : 5, "date" : ISODate("2017-02-08T22:05:02.055Z") }
onError
컬렉션에 구문 분석할 수 없는 날짜 문자열이 있는 문서가 포함된 경우 선택적 onError
매개변수에 집계 표현식을 제공하지 않으면 $dateFromString
에서 오류가 발생합니다.
예를 들어, 컬렉션 dates
에 다음 문서가 포함되어 있다고 가정해 보겠습니다.
{ "_id" : 1, "date" : "2017-02-08T12:10:40.787", timezone: "America/New_York" }, { "_id" : 2, "date" : "20177-02-09T03:35:02.055", timezone: "America/New_York" }
onError
매개변수를 사용하여 잘못된 날짜를 원래 문자열 형식으로 반환할 수 있습니다.
db.dates.aggregate( [ { $project: { date: { $dateFromString: { dateString: '$date', timezone: '$timezone', onError: '$date' } } } } ] )
이 경우 다음과 같은 문서가 반환됩니다.
{ "_id" : 1, "date" : ISODate("2017-02-08T17:10:40.787Z") } { "_id" : 2, "date" : "20177-02-09T03:35:02.055" }
onNull
컬렉션에 null
날짜 문자열을 포함한 문서가 포함된 경우, $dateFromString
은 선택적 onNull
매개 변수에 집계 표현식 을 제공하지 않는 한 null
을 반환합니다.
예를 들어, 컬렉션 dates
에 다음 문서가 포함되어 있다고 가정해 보겠습니다.
{ "_id" : 1, "date" : "2017-02-08T12:10:40.787", timezone: "America/New_York" }, { "_id" : 2, "date" : null, timezone: "America/New_York" }
onNull
매개변수를 사용하여 $dateFromString
이 null
대신 유닉스 시간을 나타내는 날짜를 반환하도록 할 수 있습니다.
db.dates.aggregate( [ { $project: { date: { $dateFromString: { dateString: '$date', timezone: '$timezone', onNull: new Date(0) } } } } ] )
이 경우 다음과 같은 문서가 반환됩니다.
{ "_id" : 1, "date" : ISODate("2017-02-08T17:10:40.787Z") } { "_id" : 2, "date" : ISODate("1970-01-01T00:00:00Z") }