Datumsvergleich in MongoDB
- Verwenden Sie den Datumsbereich in MongoDB
-
Verwenden Sie
$gt
in MongoDB -
Verwenden Sie
$gte
in MongoDB -
Verwenden Sie
$lt
in MongoDB -
Verwenden Sie
$lte
in MongoDB - Finden Sie Dokumente zwischen zwei Daten in MongoDB
- Finden Sie Dokumente nach einem bestimmten Datum in MongoDB
- Finden Sie Dokumente vor einem bestimmten Datum in MongoDB
- Vergleich basierend auf dem Datum in MongoDB
Das Problem der Rückgabe einer Abfrage basierend auf Date wird in diesem MongoDB-Anleitungsartikel behandelt. Darüber hinaus wird das Abfragen mithilfe eines Datumsbereichs in MongoDB gut gelehrt.
Verwenden Sie den Datumsbereich in MongoDB
Wir werden lernen, eine MongoDB-Datumsbereichsabfrage zu schreiben, um Datensätze basierend auf einem Zeitstempel oder Datumsbereich abzurufen. Beispielsweise sind MongoDB-Daten größer oder kleiner als Uhrzeit oder Datum ein Beispiel für eine Datumsabfrage.
Um eine Abfrage mit einem Datumsbereich in MongoDB auszuführen, verwenden Sie die folgende grundlegende Syntax.
db.collection.find({
day: {
$gt: ISODate("2020-01-21"),
$lt: ISODate("2020-01-24")
}
})
Diese Abfrage gibt alle Datensätze in der Sammlung zurück, deren Feld Tag
größer oder gleich 21.01.2020
, aber kleiner oder gleich 24.01.2020 ist.
Verwenden Sie $gt
in MongoDB
Syntax:
{ field: { $gt: value } }
Der Wert von field
ist größer als (d. h. >
) der angegebene value
; also wählt $gt
diese Dokumente aus. Vergleichsoperatoren führen nur dann Vergleiche auf Feldern aus, wenn der BSON-Typ für die meisten Datentypen mit dem Typ des Abfragewerts übereinstimmt.
Type Bracketing in MongoDB ermöglicht einen eingeschränkten Cross-BSON-Vergleich. Die folgenden Beispiele verwenden die Collection inventory
.
db.inventory.insertMany( [
{
"item": "nuts", "quantity": 31,
"carrier": { "name": "import", "fee": 3 }
},
{
"item": "screws", "quantity": 50,
"carrier": { "name": "import", "fee": 4 }
},
{
"item": "washers", "quantity": 11,
"carrier": { "name": "import", "fee": 1 }
}
] )
Wählen Sie alle Dokumente in der Sammlung Inventar
aus, bei denen Menge
größer als 20
ist.
db.inventory.find( { quantity: { $gt: 20 } } )
Ausgang:
Im folgenden Beispiel wird das Feld Preis
basierend auf einem $gt
-Vergleich mit einem Feld in einem eingebetteten Dokument festgelegt.
db.inventory.updateOne(
{ "carrier.fee": { $gt: 2 } }, { $set: { "price": 9.99 } }
)
Ausgang:
Diese updateOne()
-Methode sucht nach einem eingebetteten Dokument namens carrier
mit einem fee
-Unterfeld. Das erste Dokument entdeckt, wo Gebühr
einen Wert größer als 2 hat; es setzt Preis: 9,99
.
Verwenden Sie updateMany()
, um den Wert des Felds price
in allen Dokumenten zu ändern, bei denen carrier.fee
größer als 2 ist.
Verwenden Sie $gte
in MongoDB
Syntax:
{ field: { $gte: value } }
$gte
wählt Dokumente aus, deren Feld
-Wert größer oder gleich (d. h. >=
) einem bereitgestellten Wert (z. B. Wert
) ist. In den folgenden Beispielen wird die Sammlung Inventar
verwendet.
db.inventory.insertMany( [
{
"item": "nuts", "quantity": 31,
"carrier": { "name": "import", "fee": 3 }
},
{
"item": "bolts", "quantity": 51,
"carrier": { "name": "import", "fee": 4 }
},
{
"item": "washers", "quantity": 11,
"carrier": { "name": "import", "fee": 1 }
}
] )
Alle Dokumente in der Sammlung Inventar
mit einer Anzahl größer oder gleich 20
sollten ausgewählt werden.
db.inventory.find( { quantity: { $gte: 20 } } )
Ausgang:
Das Feld Preis
wird im folgenden Beispiel durch einen $gte
-Vergleich mit einem Feld in einem eingebetteten Dokument gesetzt.
db.inventory.updateMany(
{ "carrier.fee": { $gte: 2 } }, { $set: { "price": 9.99 } }
)
Ausgang:
Verwenden Sie $lt
in MongoDB
Syntax:
{ field: { $lt: value } }
$lt
wählt Dokumente aus, in denen der field
-Wert kleiner als der angegebene value
ist. Die folgenden Beispiele verwenden die vorherige inventory
-Sammlung.
Wählen Sie alle Dokumente in der Sammlung Inventar
aus, bei denen die Menge
weniger als 20
beträgt.
db.inventory.find( { quantity: { $lt: 20 } } )
Ausgang:
Dieses nächste Beispiel legt das Feld Preis
basierend auf einem $lt
-Vergleich mit einem Feld in einem eingebetteten Dokument fest.
db.inventory.updateMany( { "carrier.fee": { $lt: 20 } }, { $set: { price: 9.99 } } )
Ausgang:
Verwenden Sie $lte
in MongoDB
Syntax:
{ field: { $lte: value } }
$lte
wählt Dokumente aus, deren Feld
-Wert kleiner oder gleich (d. h. =
) dem bereitgestellten Wert
ist. Die folgenden Beispiele verwenden die vorherige Inventar
-Sammlung.
Betrachten Sie das folgende Beispiel.
db.inventory.find( { quantity: { $lte: 20 } } )
Diese Abfrage gibt alle Einträge in der Sammlung Inventar
mit einem Mengenfeldwert von kleiner oder gleich 20.
zurück.
Ausgang:
Das Feld Preis
wird im folgenden Beispiel mit einem $lte
-Vergleich gegen ein Feld in einem eingebetteten Dokument gesetzt.
db.inventory.updateMany(
{ "carrier.fee": { $lte: 5 } }, { $set: { price: 9.99 } }
)
Ausgang:
Die folgenden Informationen zeigen, wie diese Syntax mithilfe der folgenden Dokumente auf einen Datensatz angewendet wird.
db.data.insertOne({day: new Date("2022-01-20"), amount: 40})
db.data.insertOne({day: new Date("2022-01-21"), amount: 32})
db.data.insertOne({day: new Date("2022-01-22"), amount: 19})
db.data.insertOne({day: new Date("2022-01-23"), amount: 29})
db.data.insertOne({day: new Date("2022-01-24"), amount: 35})
Finden Sie Dokumente zwischen zwei Daten in MongoDB
Verwenden Sie die folgende Abfrage, um alle Dokumente mit dem Feld Tag
zwischen zwei Datumsangaben zu finden.
Anfrage:
db.data.find({
day: {
$gt: ISODate("2020-01-21"),
$lt: ISODate("2020-01-24")
}
})
Ausgang:
{ _id: ObjectId("618548bc7529c93ea0b41490"),
day: 2020-01-22T00:00:00.000Z,
amount: 19 }
{ _id: ObjectId("618548bc7529c93ea0b41491"),
day: 2020-01-23T00:00:00.000Z,
amount: 29 }
Finden Sie Dokumente nach einem bestimmten Datum in MongoDB
Um alle Dokumente zu finden, bei denen das Feld Tag
auf ein Datum nach einem bestimmten Datum eingestellt ist, verwenden Sie die folgende Abfrage.
Anfrage:
db.data.find({
day: {
$gt: ISODate("2020-01-22")
}
})
Ausgang:
{ _id: ObjectId("618548bc7529c93ea0b41491"),
day: 2020-01-23T00:00:00.000Z,
amount: 29 }
{ _id: ObjectId("618548bc7529c93ea0b41492"),
day: 2020-01-24T00:00:00.000Z,
amount: 35 }
Finden Sie Dokumente vor einem bestimmten Datum in MongoDB
Verwenden Sie die folgende Abfrage, um alle Dokumente zu finden, bei denen das Feld Tag
vor einem bestimmten Datum liegt.
Anfrage:
db.data.find({
day: {
$lt: ISODate("2020-01-22")
}
})
Ausgang:
{ _id: ObjectId("618548bc7529c93ea0b4148e"),
day: 2020-01-20T00:00:00.000Z,
amount: 40 }
{ _id: ObjectId("618548bc7529c93ea0b4148f"),
day: 2020-01-21T00:00:00.000Z,
amount: 32 }
Vergleich basierend auf dem Datum in MongoDB
Lassen Sie uns MongoDB verwenden, um eine Abfrage basierend auf dem Datum zurückzugeben. Erstellen Sie zunächst mithilfe des Dokuments eine Sammlung namens Daten
, um das Konzept besser zu verstehen.
Anfrage:
db.data.insertOne({"PassengerName":"John","PassengerAge":23,"PassengerArrivalTime":new ISODate("2018-03-10 14:45:56")});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c8a57be9064dcd4a68b70e4")
}
db.data.insertOne({"PassengerName":"Larry","PassengerAge":21,"PassengerArrivalTime":new ISODate("2018-05-19 11:10:23")});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c8a57bf9064dcd4a68b70e5")
}
db.data.insertOne({"PassengerName":"Mike","PassengerAge":24,"PassengerArrivalTime":new ISODate("2018-08-25 16:40:12")});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c8a57bf9064dcd4a68b70e6")
}
db.data.insertOne({"PassengerName":"Carol","PassengerAge":26,"PassengerArrivalTime":new ISODate("2019-01-29 09:45:10")});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c8a57bf9064dcd4a68b70e7")
}
Verwenden Sie die Funktion find()
, um alle Dokumente einer Sammlung anzuzeigen.
Anfrage:
db.data queryFromDate.find().pretty();
Ausgang:
Das Folgende ist die datumsbasierte Rückgabeabfrage. Datensätze mit einem Erstellungsdatum nach 2018-05-19T11:10:23Z
werden zurückgegeben.
Anfrage:
> db.data queryFromDate.find({"PassengerArrivalTime" : { $gte : new ISODate("2018-05-19T11:10:23Z") }}).pretty();
Ausgang:
Wir haben durch diesen Artikel die Verwendung der Date()
-Methode kennengelernt. An Beispielen wurden kurz die Befehle $gte
und $lte
sowie die datenbasierte Rückfrage erläutert.