$dateToString

$dateToString 연산자는 날짜 개체를 지정된 형식의 문자열로 변환하는 데 사용됩니다. 일반적으로 집계 파이프라인에서 보고, 쿼리 또는 표시를 위해 날짜 필드의 서식을 지정하는 데 사용됩니다. 이 연산자는 매우 다양하며 사용자 지정 날짜 형식을 정의할 수 있습니다.

문법

{
  $dateToString: {
    format: "<format_string>",
    date: <date_expression>,
    timezone: "<timezone>",
    onNull: "<replacement_value>"
  }
}

매개 변수

매개 변수 Description
format 출력 날짜의 형식을 지정하는 문자열입니다.
date 서식을 지정할 날짜 식입니다.
timezone (선택 사항) 표준 시간대를 지정하는 문자열입니다. 제공되지 않으면 기본적으로 UTC로 설정됩니다.
onNull (선택 사항) 필드가 없거나 누락된 경우 date 반환할 값입니다 null .

서식 지정자

기호 Meaning
%Y 연도(4자리 숫자)
%m 월(두 자리 수)
%d 월의 날(두 자리 수)
%H 시간(24시간, 두 자리)
%M 분(두 자리 수)
%S 초(두 자리 수)
%L 밀리초(3자리 숫자)

예시

스토어 컬렉션에서 이 샘플 문서를 고려합니다.

{
    "_id": "0fcc0bf0-ed18-4ab8-b558-9848e18058f4",
    "name": "First Up Consultants | Beverage Shop - Satterfieldmouth",
    "location": {
        "lat": -89.2384,
        "lon": -46.4012
    },
    "staff": {
        "totalStaff": {
            "fullTime": 8,
            "partTime": 20
        }
    },
    "sales": {
        "totalSales": 75670,
        "salesByCategory": [
            {
                "categoryName": "Wine Accessories",
                "totalSales": 34440
            },
            {
                "categoryName": "Bitters",
                "totalSales": 39496
            },
            {
                "categoryName": "Rum",
                "totalSales": 1734
            }
        ]
    },
    "promotionEvents": [
        {
            "eventName": "Unbeatable Bargain Bash",
            "promotionalDates": {
                "startDate": {
                    "Year": 2024,
                    "Month": 6,
                    "Day": 23
                },
                "endDate": {
                    "Year": 2024,
                    "Month": 7,
                    "Day": 2
                }
            },
            "discounts": [
                {
                    "categoryName": "Whiskey",
                    "discountPercentage": 7
                },
                {
                    "categoryName": "Bitters",
                    "discountPercentage": 15
                },
                {
                    "categoryName": "Brandy",
                    "discountPercentage": 8
                },
                {
                    "categoryName": "Sports Drinks",
                    "discountPercentage": 22
                },
                {
                    "categoryName": "Vodka",
                    "discountPercentage": 19
                }
            ]
        },
        {
            "eventName": "Steal of a Deal Days",
            "promotionalDates": {
                "startDate": {
                    "Year": 2024,
                    "Month": 9,
                    "Day": 21
                },
                "endDate": {
                    "Year": 2024,
                    "Month": 9,
                    "Day": 29
                }
            },
            "discounts": [
                {
                    "categoryName": "Organic Wine",
                    "discountPercentage": 19
                },
                {
                    "categoryName": "White Wine",
                    "discountPercentage": 20
                },
                {
                    "categoryName": "Sparkling Wine",
                    "discountPercentage": 19
                },
                {
                    "categoryName": "Whiskey",
                    "discountPercentage": 17
                },
                {
                    "categoryName": "Vodka",
                    "discountPercentage": 23
                }
            ]
        }
    ]
}

예제 1: ISO와 유사한 문자열에 날짜 필드 서식 지정

이 쿼리는 연산자를 $dateToString 사용하여 lastUpdated 타임스탬프를 문자열로 서식을 지정합니다YYYY-MM-DD. 로그, 보고서 또는 UI에 적합한 읽기 가능한 형식으로 날짜를 표시하는 데 도움이 됩니다.

db.stores.aggregate([
  {
    $match: { _id: "e6410bb3-843d-4fa6-8c70-7472925f6d0a" }
  },
  {
    $project: {
      _id: 0,
      formattedDate: {
        $dateToString: {
          format: "%Y-%m-%d",
          date: "$lastUpdated"
        }
      }
    }
  }
])

이 쿼리는 다음 결과를 반환합니다.

[
  {
    "formattedDate": "2024-12-04"
  }
]

예제 2: Null 값 처리

이 쿼리는 존재하지 않는 필드 lastUpdated_new 타임스탬프를 을 사용하여 YYYY-MM-DD문자열로 형식을 $dateToString 지정합니다. 날짜가 없거나 null인 경우 onNull 옵션을 통해 대체 문자열 "사용 가능한 날짜 없음"을 대체합니다.

db.stores.aggregate([
  {
    $match: { _id: "e6410bb3-843d-4fa6-8c70-7472925f6d0a" }
  },
  {
    $project: {
      _id: 0,
      formattedDateOrDefault: {
        $dateToString: {
          format: "%Y-%m-%d",
          date: "$lastUpdated_new", // field doesn't exist
          onNull: "No date available"
        }
      }
    }
  }
])

이 쿼리는 다음 결과를 반환합니다.

[
  {
    "formattedDateOrDefault": "No date available"
  }
]