MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

3 Möglichkeiten zum Konvertieren eines Datums in eine Zeichenfolge in MongoDB

MongoDB hat einen Datums-BSON-Typ, mit dem Sie Datumsangaben als Daten speichern können.

Sie können Daten auch als Zeichenfolgen speichern, wenn Sie dies benötigen.

Wenn Sie noch einen Schritt weiter gehen, können Sie auch ein Datum in eine Zeichenfolge umwandeln.

Dieser Artikel stellt drei Möglichkeiten zum Konvertieren eines Datums in eine Zeichenfolge in MongoDB vor.

Beispieldaten

Die Beispiele in diesem Artikel verwenden das folgende Dokument in einer Sammlung namens cats :

{
	"_id" : 1,
	"name" : "Scratch",
	"born" : ISODate("2021-01-03T23:30:15.123Z")
}

Beachten Sie, dass der born Feld ist ein Datum. Die folgenden Beispiele verwenden verschiedene Aggregations-Pipeline-Operatoren, um dieses Feld in eine Zeichenfolge umzuwandeln.

Der $dateToString Betreiber

Der $dateToString Aggregation Pipeline Operator ist der naheliegendste Ausgangspunkt.

Wie der Name schon sagt, besteht sein einziger Zweck darin, ein Datum in einen String umzuwandeln (und das Ergebnis zurückzugeben).

Beispiel:

db.cats.aggregate(
   [
     {
       $project: {
         _id: 0,
          dateString: { $dateToString: { format: "%Y-%m-%dT%H:%M:%S.%LZ", date: "$born" } }
       }
     }
   ]
)

Ergebnis:

{ "dateString" : "2021-01-03T23:30:15.123Z" }

Hier habe ich eine Formatzeichenfolge bereitgestellt, um das Format der resultierenden Zeichenfolge anzugeben. In diesem Fall habe ich %Y-%m-%dT%H:%M:%S.%LZ verwendet , das ist das Standardformat. Wenn ich kein Format angegeben hätte, wäre dies das Format, das es verwendet hätte.

Sie können diese Formatbezeichner verschieben, damit sie zu Ihrer resultierenden Zeichenfolge passen.

Zum Beispiel könnten wir dies tun:

db.cats.aggregate(
   [
     {
       $project: {
         _id: 0,
          dateString: { $dateToString: { format: "%d/%m/%Y", date: "$born" } }
       }
     }
   ]
)

Ergebnis:

{ "dateString" : "03/01/2021" }

Siehe MongoDB $dateToString für weitere Informationen zu diesem Operator.

Der $toString Betreiber

Der $toString Der Aggregations-Pipeline-Operator ähnelt $dateToString , außer dass es von verschiedenen Typen konvertieren kann – es ist nicht nur auf die Konvertierung von einem Datum beschränkt.

Aber für unsere Zwecke konvertieren wir von einem Date.

Beispiel:

db.cats.aggregate(
   [
     {
       $project: {
         _id: 0,
          dateString: { $toString: "$born" }
       }
     }
   ]
)

Ergebnis:

{ "dateString" : "2021-01-03T23:30:15.123Z" }

Dieser Operator gibt uns nicht die Möglichkeit, ein Format anzugeben, daher wird das Format so zurückgegeben, wie es ist.

Siehe MongoDB $toString für weitere Informationen und Beispiele.

Der $convert Betreiber

Der $convert Der Operator wurde speziell für die Konvertierung zwischen einem Typ und einem anderen entwickelt.

Die input Der Parameter gibt das Feld an, das Sie konvertieren möchten, und den to Der Parameter gibt den Typ an, in den Sie ihn konvertieren möchten.

Beispiel:

db.cats.aggregate(
  [
    {
      $project:
        { 
          result: 
          {
            $convert: { 
              input: "$born", 
              to: "string",
              onError: "An error occurred",
              onNull: "Input was null or empty" 
            }
          }
        }
    }
  ]
)

Ergebnis:

{ "_id" : 1, "result" : "2021-01-03T23:30:15.123Z" }

Beachten Sie, dass die Datei $convert Operator akzeptiert auch onError und onNull Parameter, die es uns ermöglichen, eine Nachricht bereitzustellen, die im Falle eines Fehlers oder eines null verwendet werden kann Wert. Dies verhindert, dass der gesamte Aggregationsvorgang angehalten wird, und ermöglicht eine benutzerfreundliche Fehlermeldung innerhalb des Ausgabedokuments.

Siehe MongoDB $convert für weitere Informationen und Beispiele.