Wenn Sie eine MongoDB-Sammlung mit Daten haben, die als Zeichenfolgen gespeichert sind, können Sie diese bei Bedarf in den Datums-BSON-Typ konvertieren.
Im Folgenden finden Sie drei Möglichkeiten, eine Zeichenfolge in MongoDB in ein Datum umzuwandeln.
Beispieldaten
Die Beispiele in diesem Artikel verwenden das folgende Dokument in einer Sammlung namens dogs
:
{ "_id" : 1, "name" : "Fetch", "born" : "2021-01-03T23:30:15.123" }
Wir können sehen, dass die born
Das Feld enthält ein Datum, aber dieses Datum wird als Zeichenfolge gespeichert.
Wir können die folgenden Aggregations-Pipeline-Operatoren verwenden, um diese Zeichenfolge in ein Datum umzuwandeln.
Der $dateFromString
Betreiber
Der $dateFromString
Der Aggregation-Pipeline-Operator wurde speziell für die Konvertierung eines Datums in eine Zeichenfolge entwickelt.
Es erfordert einen dateString
Argument, das ist die Zeichenfolge, die Sie in ein Datum konvertieren möchten.
Hier ist ein Beispiel für die Umwandlung der Zeichenfolge in der obigen Sammlung in ein Datum:
db.dogs.aggregate([
{
$project: {
born: {
$dateFromString: {
dateString: '$born'
}
}
}
}
])
Ergebnis:
{ "_id" : 1, "born" : ISODate("2021-01-03T23:30:15.123Z") }
Wir können sehen, dass das Datum jetzt in den ISODate-Helfer eingeschlossen ist, was bedeutet, dass es sich um ein Date-Objekt handelt.
Der $dateFromString
Der Operator akzeptiert eine Handvoll anderer Argumente, die alle optional sind. Siehe MongoDB $dateFromString
für weitere Informationen und Beispiele.
Der $toDate
Betreiber
Das $toDate
Aggregations-Pipeline-Operator wandelt einen Wert in ein Datum um. Der Wert kann ein beliebiger Typ sein, der in ein Datum konvertiert werden kann, also im Wesentlichen Zahlen, Zeichenfolgen und Objekt-IDs.
In diesem Artikel geht es um das Konvertieren von Zeichenfolgen in Datumsangaben, daher hier ein Beispiel für die Verwendung von $toDate
um genau das zu tun:
db.dogs.aggregate([
{
$project: {
"born": {
$toDate: "$born"
}
}
}
])
Ergebnis:
{ "_id" : 1, "born" : ISODate("2021-01-03T23:30:15.123Z") }
Siehe Mongo $toDate
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: "date",
onError: "An error occurred",
onNull: "Input was null or empty"
}
}
}
}
]
)
Ergebnis:
{ "_id" : 1, "result" : ISODate("2021-01-03T23:30:15.123Z") }
Sie haben vielleicht bemerkt, 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.