MongoDB에서 날짜(Date) 데이터 저장하기
MongoDB에 new Date() 형태의 날짜 값을 저장하려면 new ISODate()를 사용하면 됩니다. ISODate는 MongoDB에서 날짜와 시간을 ISO 8601 표준 형식으로 저장하는 기본 방식으로, 시간대 정보까지 정확하게 관리할 수 있어 실무에서 가장 널리 사용됩니다.
아래 예제를 통해 문서(document)가 포함된 컬렉션을 생성하고 날짜 값을 저장하는 과정을 살펴보겠습니다.
1. insertOne()으로 날짜 데이터 삽입
> db.saveDateDemo.insertOne({"UserName":"John","UserLoginDatetime":new ISODate('2018-01-31 12:34:56')});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cbd67d4de8cc557214c0e04")
}
> db.saveDateDemo.insertOne({"UserName":"John","UserLoginDatetime":new ISODate('2019-02-01 04:01:10')});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cbd67e8de8cc557214c0e05")
}
> db.saveDateDemo.insertOne({"UserName":"John","UserLoginDatetime":new ISODate('2019-04-22 12:36:45')});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cbd6805de8cc557214c0e06")
}위 명령은 saveDateDemo라는 컬렉션에 사용자 이름과 로그인 시간을 담은 세 개의 문서를 차례로 삽입합니다. 각 문서에는 자동으로 고유한 ObjectId가 부여되며, UserLoginDatetime 필드에는 ISODate 형식의 날짜 값이 저장됩니다.
2. find() 메서드로 저장된 문서 조회
저장된 모든 문서를 확인하려면 find() 메서드를 사용합니다. 여기에 pretty()를 함께 사용하면 결과를 보기 좋게 정렬된 형태로 출력할 수 있습니다.
> db.saveDateDemo.find().pretty();
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
{
"_id" : ObjectId("5cbd67d4de8cc557214c0e04"),
"UserName" : "John",
"UserLoginDatetime" : ISODate("2018-01-31T12:34:56Z")
}
{
"_id" : ObjectId("5cbd67e8de8cc557214c0e05"),
"UserName" : "John",
"UserLoginDatetime" : ISODate("2019-02-01T04:01:10Z")
}
{
"_id" : ObjectId("5cbd6805de8cc557214c0e06"),
"UserName" : "John",
"UserLoginDatetime" : ISODate("2019-04-22T12:36:45Z")
}참고 사항
출력 결과에서 확인할 수 있듯이, 입력 시 공백으로 구분했던 날짜 문자열(2018-01-31 12:34:56)은 MongoDB 내부적으로 UTC 기준의 ISO 8601 형식(2018-01-31T12:34:56Z)으로 변환되어 저장됩니다. 끝에 붙은 Z는 UTC(협정 세계시)를 의미하므로, 서버 환경의 시간대와 비교할 때 이 점을 반드시 유의해야 합니다. 또한 MongoDB는 날짜를 밀리초 단위의 숫자 값으로 내부 관리하기 때문에, 날짜 범위 검색이나 정렬 작업도 매우 효율적으로 수행할 수 있습니다.