Computer >> 컴퓨터 >  >> 프로그래밍 >> MongoDB

MongoDB에서 날짜 구성 요소(연·월·일)를 하나의 날짜로 변환하는 방법

MongoDB에서 날짜 구성 요소(연·월·일)를 하나의 날짜로 변환하는 방법

MongoDB에서는 연(Year), 월(Month), 일(Day)이 각각 별도의 필드로 저장되어 있는 경우가 많습니다. 이렇게 분리된 날짜 구성 요소를 하나의 날짜 값으로 변환하려면 애그리게이션 파이프라인의 $dateFromParts 연산자와 $dateToString 연산자를 함께 사용하면 됩니다. 아래 예제를 통해 전체 과정을 단계별로 살펴보겠습니다.

1단계: 샘플 컬렉션 생성 및 도큐먼트 삽입

먼저 날짜 정보가 개별 필드로 저장된 도큐먼트를 포함하는 컬렉션을 생성합니다.

> db.demo386.insert(
... {
... details: { Month: 02, Day: 27, Year: 2020 }
... }
... );
WriteResult({ "nInserted" : 1 })

2단계: 컬렉션의 모든 도큐먼트 조회

find() 메서드를 사용해 저장된 데이터를 확인합니다.

> db.demo386.find();

위 명령을 실행하면 다음과 같은 결과가 출력됩니다.

{ "_id" : ObjectId("5e5bd9a222064be7ab44e7f7"), "details" : { "Month" : 2, "Day" : 27, "Year" : 2020 } }

3단계: 날짜 구성 요소를 하나의 날짜로 변환

다음은 $project 단계에서 $dateFromParts로 개별 필드를 조합해 날짜 객체를 만들고, $dateToString으로 원하는 형식의 문자열로 변환하는 쿼리입니다.

> db.demo386.aggregate(
... {"$project":{
... "_id":0,
... "DueDate":{
... "$dateToString":{
... "format":"%m-%d-%Y",
... "date":{"$dateFromParts": {"year":"$details.Year","month":"$details.Month","day":"$details.Day"}}
... }
... }
... }}
... );

실행 결과는 다음과 같습니다.

{ "DueDate" : "02-27-2020" }

주요 연산자 정리

$dateFromParts — year, month, day 등 개별 필드 값을 조합하여 하나의 날짜 객체를 생성합니다. 필요에 따라 시간대(timezone) 옵션도 함께 지정할 수 있습니다.

$dateToString — 날짜 객체를 지정한 포맷 문자열로 변환합니다. 예제에서 사용한 %m-%d-%Y는 각각 월, 일, 연도를 의미하며, 그 결과 "02-27-2020" 형식의 문자열이 출력됩니다.

이처럼 MongoDB의 애그리게이션 연산자를 활용하면 분리되어 저장된 날짜 정보를 손쉽게 하나의 날짜로 통합할 수 있으며, 이를 응용하면 다양한 날짜 형식 변환과 데이터 가공 작업도 효율적으로 처리할 수 있습니다.