Datumsabfrage mit ISODate in MongoDB

Tahseen Tauseef 15 Februar 2024
  1. die Date()-Methode in MongoDB
  2. Verhalten der Methode Date()
  3. Verwenden Sie die Date()-Methode in einer Abfrage in MongoDB
  4. Sortieren nach Datum in MongoDB
  5. Sortieren nach Datum, das in MongoDB nicht funktioniert
  6. Arbeitsdatumsabfrage mit ISODate() in MongoDB
Datumsabfrage mit ISODate in MongoDB

Dieser MongoDB-Lehrbeitrag erklärt die Date()-Methode. In diesem Artikel werden verschiedene Ansätze mit Datumsabfragen beschrieben.

die Date()-Methode in MongoDB

Die Methode Date() gibt das Datum als String oder als Date-Objekt zurück.

  1. In der MongoDB-Shell oder Mongosh gibt die Methode Date() das aktuelle Datum als String zurück.
  2. Die Funktion new Date() gibt ein Date-Objekt mit dem aktuellen Datum zurück. Der ISODate-Helfer wird von Mongosh um das Date-Objekt gewickelt, und das ISODate ist in UTC (Weltzeit) angegeben.

Sie können die Funktion new Date() oder die Methode ISODate() 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 das new Date("") zurückgegeben.
  2. Das new Date("") gibt ein DateTime in der lokalen Zeitzone des Clients an und gibt ein ISODate mit diesem DateTime in UTC zurück.
  3. Das new Date("") nimmt ein DateTime in UTC und gibt ein ISODate mit diesem DateTime in UTC zurück.
  4. new Date(integer>) gibt eine ISODate-Instanz mit der Angabe DateTime in Millisekunden seit der UNIX-Epoche (1. Januar 1970) zurück.

Verhalten der Methode Date()

Date-Objekte werden intern als vorzeichenbehaftete 64-Bit-Ganzzahl gespeichert, die die Millisekunden seit der Unix-Epoche (1. Januar 1970) darstellt. Alle Datenbankprozeduren und Treiber unterstützen nicht den kompletten 64-Bit-Bereich.

Daten mit Jahreszahlen im inklusiven Bereich von 0 bis 9999 sind sicher zu handhaben.

Verwenden Sie die Date()-Methode in einer Abfrage in MongoDB

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.

Code:

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

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

var myDateString = Date();

mongosh umschließt Objekte vom Typ Date mit dem ISODate-Helfer. Die Objekte bleiben jedoch vom Typ Datum.

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");

Sortieren nach Datum in MongoDB

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

Codebeispiel:

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 wird verwendet, um sie in aufsteigender Reihenfolge anzuordnen, wobei frühere Daten zuerst erscheinen.

Codebeispiel:

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"
}

Nachdem Sie es sortiert haben, notieren Sie es sich, weil das erste Dokument eher eine Datumszeichenfolge als ein Datumsobjekt enthält.

Die Datumszeichenfolge wird zuerst angezeigt, auch wenn das Datum in Dokument 2 später initialisiert wird.

Sortieren nach Datum, das in MongoDB nicht funktioniert

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

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

Codebeispiel:

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

Das Datum wird 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.

Arbeitsdatumsabfrage mit ISODate() in MongoDB

Verwenden Sie den Operator $gte und ISODate(), um die Datumsabfrage mit ISODate in MongoDB zu bearbeiten. Lassen Sie uns anhand des Dokuments eine Sammlung erstellen, um den Begriff besser zu verstehen.

Das Folgende ist die Abfrage zum Erstellen einer Sammlung mit einem Dokument.

Anfrage:

> 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:

Verwenden Sie die Funktion find(), um Dokumente in einer Sammlung anzuzeigen

Hier ist die Datumsabfrage mit ISODate() in MongoDB.

Anfrage:

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

Ausgang:

Datumsabfrage mit ISODate() in MongoDB

Verwandter Artikel - MongoDB Query