Speichern Sie Datum und Uhrzeit in MongoDB

Tahseen Tauseef 15 Februar 2024
  1. Verwenden Sie die Date()-Methode, um Datum und Uhrzeit in MongoDB zu speichern
  2. Verwenden Sie ISODate(), um Datum und Uhrzeit in MongoDB zu speichern
  3. Abschluss
Speichern Sie Datum und Uhrzeit in MongoDB

In diesem Artikel wird erläutert, wie Datum und Uhrzeit am besten gespeichert werden. Hier wird die Methode Date() im Detail erklärt.

Darüber hinaus werden verschiedene Ansätze zur Verwendung von Datumsabfragen beschrieben. Das Datumsabfrageproblem mit ISODate, das in MongoDB nicht funktioniert, wird auch mit einer Erläuterung der Codesegmente besprochen.

Verwenden Sie die Date()-Methode, um Datum und Uhrzeit in MongoDB zu speichern

Date() gibt das aktuelle Datum als String oder als Date-Objekt aus.

new Date() gibt ein Date-Objekt mit dem aktuellen Datum zurück. Der ISODate-Helfer wird von Mongosh um dieses Objekt gewickelt; das ISODate ist in UTC (Universal Time).

Sie können die new Date()-Funktion Object() { [native code] } oder die ISODate()-Methode verwenden, um ein bestimmtes Datum zu definieren, indem Sie einen ISO-8601-Datumsstring mit einem Jahr zwischen 0 und 9999 angeben Diese Funktionen akzeptieren die folgenden Formate:

  1. Das ISODate mit dem gelieferten Datum wird durch new Date("") zurückgegeben.
  2. new Date("") gibt eine DateTime in der lokalen Zeitzone des Clients an und gibt ISODate mit dieser DateTime in UTC zurück.
  3. new Date(<integer>) gibt eine ISODate-Instanz mit der in Millisekunden angegebenen DateTime seit der UNIX-Epoche (1. Januar 1970) zurück.

Verhalten der Date()-Methode in MongoDB

Date-Objekte werden intern als vorzeichenbehaftete 64-Bit-Ganzzahl gehalten, die die Millisekunden seit der Unix-Epoche darstellt.

Alle Datenbankprozeduren und Treiber unterstützen nicht den kompletten 64-Bit-Bereich. Datumsangaben mit Jahreszahlen im Bereich von 0 bis 9999 sind sicher zu handhaben.

Beispiele für die Methode Date()

Verwenden Sie Date() in einer Abfrage

Der folgende Code fügt ein Dokument hinzu, bei dem das Feld dateAdded auf das aktuelle Datum gesetzt ist, wenn kein Dokument mit der _id gleich 1 in der Sammlung products existiert:

db.products.updateOne(
    { _id: 1 },
    {
        $set: { item: "apple" },
        $setOnInsert: { dateAdded: new Date() }
    },
    { upsert: true }
)

Rückgabedatum als String

Verwenden Sie die Methode Date(), um das Datum als Zeichenfolge zurückzugeben, wie im folgenden Beispiel zu sehen:

var myDateString = Date();

Rückgabedatum als Date-Objekt

Der Mongosh umschließt Objekte vom Datumstyp mit dem ISODate-Helfer; die Objekte bleiben jedoch vom Datumstyp.

Das folgende Beispiel verwendet new Date(), um das Date-Objekt mit der angegebenen UTC DateTime zurückzugeben.

var myDate = new Date("2016-05-18T16:00:00Z");

MongoDB Sortieren nach Datum

Sie können dieses Problem mit der Funktion sort() und dem Aggregat $sort in MongoDB lösen. Mit diesem Tool können Sie die Daten in aufsteigender oder absteigender Reihenfolge sortieren.

Beispiel:

db.posts.find().pretty()
{
    "_id" : 1,
    "title" : "MongoDB",
    "body" : "Hi there",
    "date" : "2021-01-01T00:00:00.000Z",
        "Country" : "United Kingdom"
}
{
    "_id" : 2,
    "title" : "MySQL",
    "body" : "Hello",
    "date" : ISODate("2020-01-01T00:00:00Z"),
        "Country" : "United States of America"
}
{
    "_id" : 3,
    "title" : "SQL",
    "body" : "World",
    "date" : ISODate("2021-01-01T00:00:00Z"),
        "Country" : "New Zealand"
}

Einige Daten werden der Beitragssammlung hinzugefügt, und das Datumsfeld ordnet sie in aufsteigender Reihenfolge an, wobei frühere Daten zuerst angezeigt werden.

db.posts.find().sort({ date: 1 }).pretty()
{
    "_id" : 1,
    "title" : "MongoDB",
    "body" : "Hi there",
    "date" : "2021-01-01T00:00:00.000Z",
        "Country" : "United Kingdom"
}
{
    "_id" : 2,
    "title" : "MySQL",
    "body" : "Hello",
    "date" : ISODate("2020-01-01T00:00:00Z"),
        "Country" : "United States of America"
}
{
    "_id" : 3,
    "title" : "SQL",
    "body" : "World",
    "date" : ISODate("2021-01-01T00:00:00Z"),
        "Country" : "New Zealand"
}

Da das erste Dokument einen Datumsstring anstelle eines date-Objekts hat, erscheint der Datumsstring zuerst, auch wenn das Datum in Dokument 2 später liegt.

MongoDB Sortieren nach Datum funktioniert nicht

Es kann mehrere Gründe geben, warum MongoDB nicht funktioniert, aber Sie müssen sich an einige Verfahren erinnern, um in MongoDB nach Datum zu sortieren.

  1. Denken Sie immer daran, dass Sie die Daten in einer Sammlung speichern.
  2. Es gibt zwei Möglichkeiten, das Feld Datum im Dokument zu speichern – Date() und ISODate().
  3. Wenn Sie das Feld date mit der Methode sort() sortieren, prüfen Sie, welchen Datentyp Sie verwendet haben.

Beispiel:

db.document.insertOne({ "productId" : 1001, "productDeliveryDateTime": new Date() });
{
        "acknowledged" : true,
        "insertedId" : ObjectId("611c9e39e1fdc428cf238802")
}

Das Datum wird in diesem Beispiel mit der Zeichenfolge Date() hinzugefügt, und der Sammlungsname ist das Dokument. Auf die gleiche Weise können Sie mit ISODate() ein Datum in das Dokument einfügen.

Verwenden Sie ISODate(), um Datum und Uhrzeit in MongoDB zu speichern

Verwenden Sie den Operator $gte und ISODate(), um die Datumsabfrage mit ISODate in MongoDB zu implementieren.

Lassen Sie uns anhand des Dokuments eine Sammlung erstellen, um dies besser zu verstehen. Das Folgende ist die Abfrage zum Erstellen einer Sammlung mit einem Dokument:

> db.dateDemo.insertOne({"StudentName":"John","StudentAge":26,"AdmissionDate":new ISODate("2013-06-07")});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c8a65799064dcd4a68b70ea")
}

Die Funktion find() kann alle Dokumente einer Sammlung anzeigen.

Anfrage:

db.dateDemo.find().pretty();

Ausgang:

Datumsabfrage

Datumsabfrage mit ISODate():

> db.dateDemo.find({"AdmissionDate":{"$gte": ISODate("2013-06-07T00:00:00Z")}}).pretty();

Ausgang:

Datumsabfrage 1

Abschluss

Dieser Artikel hat die Methode Date() kurz erklärt. Anschließend wird auf das Problem der Sortierung von Collections mit der Methode Date() hingewiesen.

Ein Beispiel erklärt, wie die Datumsabfrage mit ISODate in MongoDB funktioniert. Dies zeigte auch, dass das beste Format zum Speichern von Datum und Uhrzeit in MongoDB die Verwendung des nativen JavaScript-Formats Date() oder ISODate() ist, da es intern in ein BSON-natives Date-Objekt konvertiert wird.