$currentDate

Der $currentDate Operator legt den Wert eines Felds auf das aktuelle Datum fest, entweder als Datum oder als Zeitstempel. Dieser Operator eignet sich zum Nachverfolgen, wann Dokumente zuletzt geändert wurden oder zum Festlegen von Zeitstempeln zum Erstellen von Zeitstempeln.

Syntax

{
  $currentDate: {
    <field1>: <typeSpecification1>,
    <field2>: <typeSpecification2>,
    ...
  }
}

Die Parameter

Parameter Description
field Der Name des Felds, das auf das aktuelle Datum festgelegt werden soll.
typeSpecification Wahlfrei. Gibt den Typ des Datumswerts an. Kann (für Datumstyp) oder true für den Zeitstempeltyp sein { $type: "timestamp" } . Der Standardwert ist true (Datum).

Examples

Betrachten Sie dieses Beispieldokument aus der Stores-Sammlung.

{
  "_id": "7954bd5c-9ac2-4c10-bb7a-2b79bd0963c5",
  "name": "Lakeshore Retail | DJ Equipment Stop - Port Cecile",
  "location": {
    "lat": 60.1441,
    "lon": -141.5012
  },
  "staff": {
    "totalStaff": {
      "fullTime": 2,
      "partTime": 0
    }
  },
  "sales": {
    "salesByCategory": [
      {
        "categoryName": "DJ Headphones",
        "totalSales": 35921
      }
    ],
    "fullSales": 3700
  },
  "promotionEvents": [
    {
      "eventName": "Bargain Blitz Days",
      "promotionalDates": {
        "startDate": {
          "Year": 2024,
          "Month": 3,
          "Day": 11
        },
        "endDate": {
          "Year": 2024,
          "Month": 2,
          "Day": 18
        }
      },
      "discounts": [
        {
          "categoryName": "DJ Turntables",
          "discountPercentage": 18
        },
        {
          "categoryName": "DJ Mixers",
          "discountPercentage": 15
        }
      ]
    }
  ],
  "tag": [
    "#ShopLocal",
    "#SeasonalSale",
    "#FreeShipping",
    "#MembershipDeals"
  ],
  "company": "Lakeshore Retail",
  "city": "Port Cecile",
  "lastUpdated": {
    "$date": "2024-12-11T10:21:58.274Z"
  }
}

Beispiel 1: Festlegen des aktuellen Datums

Zum Hinzufügen eines lastUpdated Felds mit dem aktuellen Datum zu einem Speicherdokument verwenden Sie den operator $currentDate, um das Feld mit dem aktuellen Datum als Date-Objekt zu erstellen.

db.stores.updateOne(
  { "_id": "2cf3f885-9962-4b67-a172-aa9039e9ae2f" },
  {
    $currentDate: {
      "lastUpdated": true
    }
  }
)

Dieser Vorgang gibt das folgende Ergebnis zurück.

{
  acknowledged: true,
  insertedId: null,
  matchedCount: 1,
  modifiedCount: 1,
  upsertedCount: 0
}

Beispiel 2: Festlegen des aktuellen Zeitstempels

Um ein Datumsfeld und ein Zeitstempelfeld zum Nachverfolgen von Änderungen hinzuzufügen, verwenden Sie den $currentDate-Operator mit dem Wert "true" und einem Typestamp-Wert.

db.stores.updateOne(
  { "_id": "2cf3f885-9962-4b67-a172-aa9039e9ae2f" },
  {
    $currentDate: {
      "lastModified": true,
      "lastModifiedTimestamp": { $type: "timestamp" }
    }
  }
)

Dieser Vorgang gibt das folgende Ergebnis zurück.

{
  acknowledged: true,
  insertedId: null,
  matchedCount: Long("1"),
  modifiedCount: Long("1"),
  upsertedCount: 0
}

Beispiel 3: Aktualisieren geschachtelter Felder

Legen Sie das aktuelle Datum für geschachtelte Felder in der Dokumentstruktur fest.

db.stores.updateOne(
  { "_id": "2cf3f885-9962-4b67-a172-aa9039e9ae2f" },
  {
    $currentDate: {
      "sales.lastSalesUpdate": true,
      "staff.lastStaffUpdate": { $type: "timestamp" }
    }
  }
)

Dieser Vorgang gibt das folgende Ergebnis zurück.

[
  {
    "_id": "2cf3f885-9962-4b67-a172-aa9039e9ae2f",
    "name": "First Up Consultants | Bed and Bath Center - South Amir",
    "lastUpdated": ISODate("2025-02-12T10:30:45.123Z"),
    "lastModified": ISODate("2025-02-12T10:30:45.123Z"),
    "lastModifiedTimestamp": Timestamp(1739450445, 1),
    "sales": {
      "totalSales": 37701,
      "lastSalesUpdate": ISODate("2025-02-12T10:30:45.123Z"),
      "salesByCategory": [
        {
          "categoryName": "Mattress Toppers",
          "totalSales": 37701
        }
      ]
    },
    "staff": {
      "totalStaff": {
        "fullTime": 18,
        "partTime": 17
      },
      "lastStaffUpdate": Timestamp(1739450445, 1)
    }
  }
]