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.