Megosztás:


$dateToString

Az $dateToString operátor egy dátumobjektum megadott formátumú sztringgé alakítására szolgál. Az aggregációs folyamatokban gyakran használják dátummezők jelentési, lekérdezési vagy megjelenítési célokra való formázására. Ez az operátor rendkívül sokoldalú, és lehetővé teszi egyéni dátumformátumok meghatározását.

Szemantika

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

Paraméterek

Paraméter Description
format A kimeneti dátum formátumát meghatározó sztring.
date A formázandó dátumkifejezés.
timezone (Nem kötelező) Az időzónát meghatározó sztring. Alapértelmezés szerint UTC, ha nincs megadva.
onNull (Nem kötelező) Visszaadandó érték, ha a date mező hiányzik vagy hiányzik null .

Formázási definiálók

Szimbólum Meaning
%Y Év (négy számjegy)
%m Hónap (két számjegy)
%d Hónap napja (két számjegy)
%H Óra (24 órás, két számjegy)
%M Perc (két számjegy)
%S Második (két számjegy)
%L Ezredmásodperc (három számjegy)

Példák

Tekintse át ezt a mintadokumentumot az áruházak gyűjteményéből.

{
    "_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. példa: Dátummező formázása ISO-szerű sztringre

Ez a lekérdezés operátorral $dateToString formázza az lastUpdated időbélyeget sztringgé YYYY-MM-DD . Segít a dátumok olvasható formátumban való megjelenítésében, amely alkalmas a naplók, jelentések vagy felhasználói felület megjelenítésére.

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

Ez a lekérdezés a következő eredményt adja vissza.

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

2. példa: Null értékek kezelése

Ez a lekérdezés sztringként lastUpdated_newformázza a nem létező mező YYYY-MM-DD időbélyegét$dateToString. Figyelembe véve, hogy a dátum hiányzik vagy null, az onNull beállításon keresztül a "Nincs elérhető dátum" tartalék sztringet helyettesíti.

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

Ez a lekérdezés a következő eredményt adja vissza.

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