Datumsabfrage mit ISODate in MongoDB
-
die
Date()
-Methode in MongoDB -
Verhalten der Methode
Date()
-
Verwenden Sie die
Date()
-Methode in einer Abfrage in MongoDB - Sortieren nach Datum in MongoDB
- Sortieren nach Datum, das in MongoDB nicht funktioniert
-
Arbeitsdatumsabfrage 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.
- In der MongoDB-Shell oder Mongosh gibt die Methode
Date()
das aktuelle Datum als String zurück. - Die Funktion
new Date()
gibt einDate
-Objekt mit dem aktuellen Datum zurück. Der ISODate-Helfer wird von Mongosh um dasDate
-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.
- Das
ISODate
mit dem gelieferten Datum wird durch dasnew Date("")
zurückgegeben. - Das
new Date("")
gibt einDateTime
in der lokalen Zeitzone des Clients an und gibt ein ISODate mit diesemDateTime
in UTC zurück. - Das
new Date("")
nimmt einDateTime
in UTC und gibt ein ISODate mit diesemDateTime
in UTC zurück. new Date(integer>)
gibt eine ISODate-Instanz mit der AngabeDateTime
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.
- Denken Sie immer daran, dass Sie mit help die Daten in einer Sammlung speichern.
- Es gibt zwei Möglichkeiten, das Datumsfeld im Dokument zu speichern.
- Die Zeichenfolge
Date()
und der DatentypISODate()
werden verwendet, um das Datum in Dokumenten zu speichern. - 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:
Hier ist die Datumsabfrage mit ISODate()
in MongoDB.
Anfrage:
> db.dateDemo.find({"AdmissionDate":{"$gte": ISODate("2013-06-07T00:00:00Z")}}).pretty();
Ausgang: