Datumsvergleich in MongoDB

Tahseen Tauseef 15 Februar 2024
  1. Verwenden Sie den Datumsbereich in MongoDB
  2. Verwenden Sie $gt in MongoDB
  3. Verwenden Sie $gte in MongoDB
  4. Verwenden Sie $lt in MongoDB
  5. Verwenden Sie $lte in MongoDB
  6. Finden Sie Dokumente zwischen zwei Daten in MongoDB
  7. Finden Sie Dokumente nach einem bestimmten Datum in MongoDB
  8. Finden Sie Dokumente vor einem bestimmten Datum in MongoDB
  9. Vergleich basierend auf dem Datum in MongoDB
Datumsvergleich 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:

Verwenden Sie $gt in MongoDB

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:

Führen Sie die Aktualisierung basierend auf eingebetteten Dokumentfeldern durch

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:

Verwenden Sie $gte in MongoDB

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:

Führen Sie die Aktualisierung basierend auf eingebetteten Dokumentfeldern mit $gte durch

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:

Verwenden Sie $lt in MongoDB

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:

Führen Sie die Aktualisierung basierend auf eingebetteten Dokumentfeldern mit $lt durch

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:

Verwenden Sie $lte in MongoDB

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:

Führen Sie die Aktualisierung basierend auf eingebetteten Dokumentfeldern mit $lte durch

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:

Verwenden Sie die Funktion find(), um alle Dokumente in einer Sammlung zurückzugeben

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:

Verwenden Sie eine datumsbasierte Abfrage, um Dokumente in einer Sammlung zurückzugeben

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.

Verwandter Artikel - MongoDB Date