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

MongoDB 셸에서 날짜 값 형식을 지정하는 방법 ($dateToString 활용)

MongoDB에서 날짜(Date) 값을 원하는 형식의 문자열로 변환하려면 집계 파이프라인의 $dateToString 연산자를 사용하면 됩니다. 이 연산자는 ISODate 형식으로 저장된 날짜를 'YYYY-MM-DD HH-mm'처럼 사용자가 지정한 패턴의 문자열로 손쉽게 바꿔 줍니다.

1. 샘플 컬렉션 생성하기

먼저 날짜 필드(DueDate)를 포함한 문서들로 컬렉션을 생성해 보겠습니다.

> db.demo480.insertOne({id:1,"DueDate":new ISODate("2020-01-10")});{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e821056b0f3fa88e2279098")
}
> db.demo480.insertOne({id:1,"DueDate":new ISODate("2017-12-21")});{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e821062b0f3fa88e2279099")
}
> db.demo480.insertOne({id:1,"DueDate":new ISODate("2019-10-12")});{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e82106ab0f3fa88e227909a")
}
> db.demo480.insertOne({id:1,"DueDate":new ISODate("2019-12-01")});{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e821078b0f3fa88e227909b")
}

2. 저장된 문서 확인하기

find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 조회할 수 있습니다.

> db.demo480.find();

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

{ "_id" : ObjectId("5e821056b0f3fa88e2279098"), "id" : 1, "DueDate" : ISODate("2020-01-10T00:00:00Z") }
{ "_id" : ObjectId("5e821062b0f3fa88e2279099"), "id" : 1, "DueDate" : ISODate("2017-12-21T00:00:00Z") }
{ "_id" : ObjectId("5e82106ab0f3fa88e227909a"), "id" : 1, "DueDate" : ISODate("2019-10-12T00:00:00Z") }
{ "_id" : ObjectId("5e821078b0f3fa88e227909b"), "id" : 1, "DueDate" : ISODate("2019-12-01T00:00:00Z") }

3. $dateToString으로 날짜 형식 변환하기

이제 aggregate()와 함께 $match, $sort, $project 단계를 조합하여 날짜 값을 원하는 형식으로 변환해 보겠습니다.

> db.demo480.aggregate([
...    { "$match": { "id" : 1 } },
...    { "$sort": { "DueDate": -1 } },
...    {
...       "$project": {
...          "_id": 0,
...          "DueDate": {
...             "$dateToString": {
...                "format": "%Y-%m-%d %H-%M",
...                "date": "$DueDate"
...             }
...          }
...       }
...    }
... ])

쿼리 설명

  • $match: id가 1인 문서만 필터링합니다.
  • $sort: DueDate 기준으로 내림차순(-1) 정렬합니다.
  • $project: _id 필드는 제외하고, DueDate만 $dateToString으로 변환하여 출력합니다.

형식 지정자(format specifier)

  • %Y — 연도(4자리)
  • %m — 월(2자리)
  • %d — 일(2자리)
  • %H — 시(24시간제)
  • %M — 분

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

{ "DueDate" : "2020-01-10 00-00" }
{ "DueDate" : "2019-12-01 00-00" }
{ "DueDate" : "2019-10-12 00-00" }
{ "DueDate" : "2017-12-21 00-00" }

이처럼 MongoDB 셸에서는 $dateToString 연산자 하나만으로 ISODate 값을 다양한 문자열 형식으로 자유롭게 변환할 수 있습니다. 필요에 따라 format 문자열의 지정자를 조합하여 원하는 출력 형식을 만들어 보세요.