Dela via


$dateToString

Operatorn $dateToString används för att konvertera ett datumobjekt till en sträng i ett angivet format. Det används ofta i aggregeringspipelines för att formatera datumfält för rapportering, frågor eller visning. Den här operatorn är mycket mångsidig och gör att du kan definiera anpassade datumformat.

Syntax

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

Parameterar

Parameter Description
format En sträng som anger formatet för utdatadatumet.
date Datumuttrycket som ska formateras.
timezone (Valfritt) En sträng som anger tidszonen. Standardvärdet är UTC om det inte anges.
onNull (Valfritt) Ett värde som ska returneras om fältet date är null eller saknas.

Formatera specificerare

Symbol Meaning
%Y År (fyra siffror)
%m Månad (två siffror)
%d Dag i månaden (två siffror)
%H Timme (24-timmars, två siffror)
%M Minut (två siffror)
%S Andra (två siffror)
%L Millisekunder (tre siffror)

Examples

Överväg det här exempeldokumentet från butiksamlingen.

{
    "_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
                }
            ]
        }
    ]
}

Exempel 1: Formatera ett datumfält till en ISO-liknande sträng

Den här frågan använder $dateToString operatorn för att formatera tidsstämpeln lastUpdated till en YYYY-MM-DD sträng. Det hjälper dig att presentera datum i ett läsbart format som är lämpligt för loggar, rapporter eller användargränssnitt.

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

Den här frågan returnerar följande resultat.

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

Exempel 2: Hantera nullvärden

Den här frågan formaterar tidsstämpeln för obefintliga fält lastUpdated_new som en YYYY-MM-DD sträng med hjälp av $dateToString. Med tanke på att datumet saknas eller null ersätter det en reservsträng "Inget datum tillgängligt" via onNull-alternativet.

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"
        }
      }
    }
  }
])

Den här frågan returnerar följande resultat.

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