Mongodb: so fragen sie mit einem datumsbereich ab
Sie können die folgende grundlegende Syntax verwenden, um einen Datumsbereich in MongoDB abzufragen:
db.collection.find({ day: { $gt : ISODate(" 2020-01-21 "), $lt : ISODate(" 2020-01-24 ") } })
Diese spezielle Abfrage gibt alle Dokumente in der Sammlung zurück, deren Feld „Tag“ größer als 21.01.2020 und kleiner als 24.01.2020 ist.
Beachten Sie, dass $gt „größer als“ und $lt „kleiner als“ angibt.
Sie können auch $gte für „größer als oder gleich“ und $lte für „kleiner als oder gleich“ verwenden.
Die folgenden Beispiele zeigen, wie Sie diese Syntax in der Praxis bei einem Sammlungsverkauf mit folgenden Dokumenten anwenden können:
db.sales.insertOne({day: new Date(" 2020-01-20 "), amount: 40 }) db.sales.insertOne({day: new Date(" 2020-01-21 "), amount: 32 }) db.sales.insertOne({day: new Date(" 2020-01-22 "), amount: 19 }) db.sales.insertOne({day: new Date(" 2020-01-23 "), amount: 29 }) db.sales.insertOne({day: new Date(" 2020-01-24 "), amount: 35 })
Beispiel 1: Suche nach Dokumenten zwischen zwei Datumsangaben
Mit dem folgenden Code können wir alle Dokumente finden, bei denen das Feld „Tag“ zwischen zwei bestimmten Daten liegt:
db.sales.find({ day: { $gt : ISODate(" 2020-01-21 "), $lt : ISODate(" 2020-01-24 ") } })
Diese Abfrage gibt die folgenden zwei Dokumente zurück:
{ _id: ObjectId("618548bc7529c93ea0b41490"), day: 2020-01-22T00:00:00.000Z, amount: 19 } { _id: ObjectId("618548bc7529c93ea0b41491"), day: 2020-01-23T00:00:00.000Z, amount: 29 }
Beispiel 2: Suche nach Dokumenten nach einem bestimmten Datum
Mit dem folgenden Code können wir alle Dokumente finden, deren Feld „Tag“ nach einem bestimmten Datum liegt:
db.sales.find({ day: { $gt : ISODate(" 2020-01-22 ") } })
Diese Abfrage gibt die folgenden zwei Dokumente zurück:
{ _id: ObjectId("618548bc7529c93ea0b41491"), day: 2020-01-23T00:00:00.000Z, amount: 29 } { _id: ObjectId("618548bc7529c93ea0b41492"), day: 2020-01-24T00:00:00.000Z, amount: 35 }
Beispiel 3: Suche nach Dokumenten vor einem bestimmten Datum
Mit dem folgenden Code können wir alle Dokumente finden, deren Feld „Tag“ vor einem bestimmten Datum liegt:
db.sales.find({ day: { $lt : ISODate(" 2020-01-22 ") } })
Diese Abfrage gibt die folgenden zwei Dokumente zurück:
{ _id: ObjectId("618548bc7529c93ea0b4148e"), day: 2020-01-20T00:00:00.000Z, amount: 40 } { _id: ObjectId("618548bc7529c93ea0b4148f"), day: 2020-01-21T00:00:00.000Z, amount: 32 }
Hinweis : Die vollständige Dokumentation für die Funktion ISODate() finden Sie hier .
Zusätzliche Ressourcen
Die folgenden Tutorials erklären, wie Sie andere häufige Abfragen in MongoDB durchführen:
MongoDB: So fragen Sie mit einem regulären Ausdruck „Gefällt mir“ ab
MongoDB: So überprüfen Sie, ob das Feld eine Zeichenfolge enthält