Konvertieren Sie eine Zeichenfolge in MongoDB in ein Datum

Bilal Shahid 20 Juni 2023
  1. Erstellen Sie Zeichenfolgen- oder Datumsdatentypen
  2. Konvertieren Sie eine Zeichenfolge in MongoDB in ein Datum
  3. Verwenden Sie den toDate-Operator
  4. Verwenden Sie den convert-Operator
  5. Verwenden Sie den dateFromString-Operator
  6. Verwenden Sie den set-Operator
  7. Verwenden Sie ClockTime
Konvertieren Sie eine Zeichenfolge in MongoDB in ein Datum

MongoDB ist eine großartige Plattform, die immer beliebter wird. Neben den verschiedenen Funktionen, die MongoDB bietet, können Sie Ihre Daten auch von einem Typ in einen anderen konvertieren.

Dies mag wie eine komplexe Funktion erscheinen, ist aber ziemlich einfach auszuführen.

Wenn Sie nach einer Möglichkeit suchen, Ihre Daten von String in Datum umzuwandeln, sind Sie hier genau richtig.

Erstellen Sie Zeichenfolgen- oder Datumsdatentypen

Bevor wir uns mit der Funktionsweise der Konvertierung befassen, müssen wir zunächst erklären, wie Zeichenfolgen und Datumsangaben erstellt werden. Idealerweise wählt ein Benutzer zunächst seinen gewünschten Datentyp aus.

Es kann jedoch vorkommen, dass Sie es später ändern möchten. Unabhängig davon gibt es hier einige Möglichkeiten, wie Sie anfänglich ein Feld mit dem Datumsformat erstellen können.

{
birth: new Date('Jun 23, 1912'),
}

Daher wäre die allgemeine Struktur der Name des Feldes, gefolgt von einem Doppelpunkt und dann dem Datentyp.

Konvertieren Sie eine Zeichenfolge in MongoDB in ein Datum

MongoDB erlaubt es Ihnen, Ihren Datentyp von String auf Date umzustellen. Es ist viel einfacher, als Sie erwarten würden.

Alles, was Sie tun müssen, ist, ein paar zusätzliche Codezeilen hinzuzufügen, und Sie können loslegen.

Verwenden Sie den toDate-Operator

Unter den zahlreichen Methoden, die es gibt, ist der toDate-Operator wahrscheinlich der, der am häufigsten verwendet wird. Dies liegt daran, dass es ziemlich leicht zu merken und einfach auszuführen ist.

Dieser Operator konvertiert den Wert nach Möglichkeit in das Datum.

Es gibt jedoch Fehler zurück, wenn es nicht in dieses Format geändert werden kann. Wenn der zu konvertierende Wert null ist oder fehlt, gibt der Operator auf die gleiche Weise null zurück.

Es ist wichtig zu beachten, dass Sie diese Methode möglicherweise nicht verwenden können, wenn Ihre MongoDB-Version älter als MongoDB 4.0 ist. Hier ist eine einfache Möglichkeit, den toDate-Operator von MongoDB zu verwenden.

db.collection.aggregate([
{ "$addFields": {
"created_at": {
"$toDate": "$created_at"
}
} }
])

Dieser Code ändert die im erforderlichen Datumsformat gespeicherten Felder. Wie oben angegeben, gibt der Operator im Falle von Fehlern oder fehlenden Daten Fehler oder Nullwerte zurück.

Hinweis: Dieser Code wurde entwickelt, um in einer aggregierten Pipeline zu funktionieren. Es kann jedoch modifiziert werden, um ohne eines verwendet zu werden.

Verwenden Sie den convert-Operator

Eine weitere Methode, mit der Sie Strings in Datumsangaben umwandeln können, ist der Operator convert. Dies funktioniert ähnlich wie der Operator toDate, solange Sie den Wert in ein Datumsformat umwandeln.

Der Operator convert ist anders, da er für viele Konvertierungen verwendet wird.

Es ist nicht auf Konvertierungen von Zeichenfolge zu Datum beschränkt. Daher ist es bei Verwendung des Operators convert erforderlich, den Datentyp zu definieren, in den Sie den Wert konvertieren möchten.

Dies geschieht häufig mit dem Operator to nach der Verwendung des Operators convert. Sie können sich auf den folgenden Code beziehen, um seine Verwendung besser zu verstehen.

db.collection.aggregate([
{ "$addFields": {
"created_at": {
"$convert": {
"input": "$created_at",
"to": "date"
}
}
} }
])

Dieser Code funktioniert genauso wie der obige für den toDate-Operator. Wie Sie sehen, wird nach Angabe des Operators convert mit dem Operator to angegeben, dass der Wert in das Datumsformat konvertiert werden soll.

Denken Sie daran, dass dieser Operator nur für MongoDB 4.0 und neuere Versionen verfügbar ist.

Verwenden Sie den dateFromString-Operator

Wenn Sie eine ältere Version von MongoDB haben, können Sie immer den Operator dateFromString verwenden, um Ihre Arbeit zu erledigen. Dies funktioniert für alle Versionen von MongoDB 3.6 oder höher, sodass Sie möglicherweise ein Update benötigen, um mit diesem Operator zu arbeiten.

Mit dem Operator dateFromString können Sie einen String in ein Datumsobjekt umwandeln. Darüber hinaus verfügt es über einige zusätzliche Funktionen, wie z. B. Optionen zum Festlegen des Datumsformats und der Zeitzone.

Hier ist eine einfache Möglichkeit, wie Sie diesen Operator verwenden können.

db.collection.aggregate([
{ "$addFields": {
"created_at": {
"$dateFromString": {
"dateString": "$created_at",
"format": "%m-%d-%Y"/* this option is only available in MongoDB 4.0. or newer versions*/
}
}
} }
])

Mit diesem Code können Sie die gewünschte Konvertierung vornehmen. Darüber hinaus können Sie sogar das Datumsformat mit dem Operator format ändern, wenn Sie die richtige Version von MongoDB haben.

Verwenden Sie den set-Operator

Wenn Sie lieber eine ältere Version von MongoDB verwenden, können Sie dennoch das gewünschte Ergebnis erhalten, indem Sie den Operator set verwenden. Dies ist in allen Versionen von MongoDB zwischen MongoDB 2.6 und MongoDB 3.1 verfügbar, einschließlich beider.

Es ist wichtig zu beachten, dass dieser Operator nicht nur zum Konvertieren von Zeichenfolgen in Datumsangaben verwendet wird. Daher müssen Sie einige manuelle Prozesse einbeziehen, um die Arbeit zu erledigen.

Sie müssen den von den find()-Methoden zurückgegebenen Cursor iterieren, indem Sie die forEach()-Methode oder die cursor-Methode next() verwenden, um auf das Erforderliche zuzugreifen. Innerhalb dieser Schleife müssen Sie das gewünschte Feld in ein ISODATE-Objekt umwandeln.

Schließlich aktualisieren Sie den Operator set, damit das Zeichenfolgenformat aktualisiert werden kann. Im folgenden Code ist xyz das Feld, das den String enthält, der in ein Datumsformat konvertiert werden muss.

var cursor = db.collection.find({"xyz": {"$exists": true, "$type": 2 }});
while (cursor.hasNext()) {
var doc = cursor.next();
db.collection.update(
{"_id" : doc._id},
{"$set" : {"xyz" : new ISODate(doc.xyz)}}
)
};

Verwenden Sie ClockTime

Eine andere Methode, die in den meisten Fällen funktioniert, verwendet ClockTime. Dies verwendet im Wesentlichen die Sammlung ClockTime in Verbindung mit der Methode find(), um einen String in das Datumsformat zu konvertieren.

Ein Beispiel für die Verwendung wird im folgenden Code angezeigt.

db.ClockTime.find().forEach(function(doc) {
doc.ClockInTime=new Date(doc.ClockInTime);
db.ClockTime.save(doc);
})

Wir hoffen, dass Sie jetzt eine Methode zum Konvertieren von Zeichenfolgen in Datumsangaben in MongoDB finden, die für Sie funktioniert.

Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub

Verwandter Artikel - MongoDB Date