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

3 Möglichkeiten zum Konvertieren einer Zeichenfolge in ein Datum in MongoDB

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.