MongoDB에서 날짜와 시간을 저장하는 방법은 크게 두 가지가 있습니다. 첫 번째는 자바스크립트처럼 Date 객체를 사용하는 방식이고, 두 번째는 ISODate() 함수를 사용하는 방식입니다.
1. Date 객체 사용하기
Date 객체는 MongoDB에서 날짜/시간을 저장하는 가장 권장되는 표준적인 방법입니다. 기본 문법은 다음과 같습니다.
new Date();
2. ISODate() 사용하기
두 번째 방법은 ISODate() 헬퍼 함수를 활용하는 것입니다. 내부적으로는 동일한 BSON Date 타입으로 저장되지만, ISO 8601 형식의 날짜 문자열을 더 직관적으로 다룰 수 있다는 장점이 있습니다.
new ISODate();
실제 예제로 확인하기
위 두 가지 문법을 실제로 이해하기 위해, 각각의 방식으로 문서를 삽입해 보겠습니다.
첫 번째 방법: Date 객체로 삽입
> db.ProductsInformation.insertOne({"ProductId":"Product-1","ProductDeliveryDateTime":new Date()});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c6ec6786fd07954a4890686")
}두 번째 방법: ISODate()로 삽입
> db.ProductsInformation.insertOne({"ProductId":"Product-2","ProductDeliveryDateTime":new ISODate()});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c6ec6846fd07954a4890687")
}저장된 데이터 조회하기
find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 확인할 수 있습니다.
> db.ProductsInformation.find().pretty();
실행 결과는 다음과 같습니다.
{
"_id" : ObjectId("5c6ec6786fd07954a4890686"),
"ProductId" : "Product-1",
"ProductDeliveryDateTime" : ISODate("2019-02-21T15:40:40.901Z")
}
{
"_id" : ObjectId("5c6ec6846fd07954a4890687"),
"ProductId" : "Product-2",
"ProductDeliveryDateTime" : ISODate("2019-02-21T15:40:52.684Z")
}출력 결과에서 볼 수 있듯이, 두 방식 모두 최종적으로는 동일하게 ISODate 형태로 저장됩니다. 이는 MongoDB가 날짜 값을 내부적으로 BSON Date 타입(64비트 정수, 유닉스 시간 기준 밀리초)으로 관리하기 때문입니다.
참고: 일반적으로는 Date 객체를 사용하는 것이 가장 안정적이고 권장되는 방법입니다. 다만 특정 날짜 문자열을 직접 파싱해야 하는 경우에는 new ISODate("2019-02-21")처럼 ISODate()에 인자를 전달하는 방식도 유용하게 활용할 수 있습니다.