Finden Sie Objekte zwischen zwei Daten in MongoDB
- Abfrage mit Datumsbereich in MongoDB
- 
          
            $gtin MongoDB
- 
          
            $gtein MongoDB
- 
          
            $ltin MongoDB
- 
          
            $ltein 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
 
In diesem Artikel wird das Problem, ein Objekt zwischen zwei Daten zu finden, kurz diskutiert. Außerdem werden die hierfür verwendeten Operatoren $gte, $lte, $gt und $lt kurz erklärt.
Abfrage mit Datumsbereich in MongoDB
Dieser Abschnitt führt Sie durch das Schreiben einer MongoDB-Datumsbereichsabfrage, um Daten basierend auf einem Zeitstempel oder einem Datumsbereich abzurufen. Datumsabfragen in MongoDB sind beispielsweise Datumsangaben, die größer oder kleiner als Uhrzeit oder Datum sind.
Um eine Abfrage in MongoDB mit einem Datumsbereich durchzuführen, verwenden Sie die unten beschriebene grundlegende Syntax.
db.collection.find({
    day: {
        $gt: ISODate("2020-01-21"),
        $lt: ISODate("2020-01-24")
    }
})
Alle Artikel in der Sammlung, deren Feld Tag größer oder gleich 21.01.2020, aber kleiner oder gleich 24.01.2020 ist, werden von dieser Abfrage zurückgegeben. Die oben beschriebenen Schritte sind einfach.
Es gibt jedoch ein paar kleinere Ungereimtheiten in diesen Richtungen.
$gt in MongoDB
Syntax:
{ field: { $gt: value } }
Da der field-Wert größer als (d. h. >) der angegebene value ist, wählt $gt diese Dokumente aus.
Bei den meisten Datentypen führen Vergleichsoperatoren nur Vergleiche für Felder durch, wenn der BSON-Typ mit dem Typ des Abfragewerts übereinstimmt. Die Typklammerung von MongoDB ermöglicht jedoch einen begrenzten Cross-BSON-Vergleich.
Die folgenden Beispiele verwenden die Sammlung Inventar. Dies ist die Beispieldatenbank, die unten in allen Beispielen verwendet wird.
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 }
   }
] )
Dokumentfelder abgleichen
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:

Führen Sie die Aktualisierung basierend auf eingebetteten Dokumentfeldern durch
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()-Funktion sucht in einem eingebetteten Dokument namens carrier nach einem fee-Unterfeld. Das erste Dokument findet einen Wert für eine Gebühr grösser als 2 und setzt den Preis: 9.99.
Verwenden Sie updateMany(), um den Wert des Preis-Felds in allen Dokumenten anzupassen, wenn carrier.fee größer als 2 ist.
$gte in MongoDB
Syntax:
{ field: { $gte: value } }
$gte wählt Dokumente aus, die einen Feld-Wert haben, der größer oder gleich (d. h. >=) einem gegebenen Wert (z. B. Wert) ist.
Bei den meisten Datentypen führen Vergleichsoperatoren nur Vergleiche für Felder durch, wenn der BSON-Typ mit dem Typ des Abfragewerts übereinstimmt. Die Typklammerung von MongoDB ermöglicht jedoch einen begrenzten Cross-BSON-Vergleich.
Dokumentfelder abgleichen
Wählen Sie alle Dokumente in der Sammlung Inventar mit einer Anzahl größer oder gleich 20 aus.
db.inventory.find( { quantity: { $gte: 20 } } )
Ausgang:

Führen Sie die Aktualisierung basierend auf eingebetteten Dokumentfeldern durch
Das Feld Preis wird im folgenden Beispiel mithilfe eines Vergleichs $gte mit einem Feld in einem eingebetteten Dokument festgelegt.
db.inventory.updateMany(
   { "carrier.fee": { $gte: 2 } }, { $set: { "price": 9.99 } }
)
Ausgang:

Diese updateOne()-Funktion sucht in einem eingebetteten Dokument namens carrier nach einem fee-Unterfeld. Preis: 9.99 wird jedem Dokument hinzugefügt, wenn Gebühr einen Wert größer oder gleich 2 hat.
Verwenden Sie updateOne(), um den Wert des Felds price nur auf der ersten Seite festzulegen, wenn carrier.fee größer als 2 ist.
$lt in MongoDB
Syntax:
{ field: { $lt: value } }
$lt wählt Dokumente aus, bei denen der Feld-Wert kleiner (oder gleich) dem angegebenen Wert ist.
Bei den meisten Datentypen führen Vergleichsoperatoren nur Vergleiche für Felder durch, wenn der BSON-Typ mit dem Typ des Abfragewerts übereinstimmt. Die Typklammerung von MongoDB ermöglicht jedoch einen begrenzten Cross-BSON-Vergleich.
Dokumentfelder abgleichen
Wählen Sie alle Dokumente in der Sammlung Inventar mit einer Anzahl von weniger als 20 aus.
db.inventory.find( { quantity: { $lt: 20 } } )
Ausgang:

Führen Sie die Aktualisierung basierend auf eingebetteten Dokumentfeldern durch
Das Feld Preis wird basierend auf einem $lt-Vergleich mit einem Feld in einem eingebetteten Dokument im folgenden Beispiel festgelegt.
db.inventory.updateMany( { "carrier.fee": { $lt: 20 } }, { $set: { price: 9.99 } } )
Ausgang:

Diese updateOne()-Funktion sucht in einem eingebetteten Dokument namens carrier nach einem fee-Unterfeld. Wenn der Wert von Gebühr kleiner als 2 ist, wird jedem Datensatz Preis: 9,99 hinzugefügt.
Verwenden Sie updateOne(), um den Wert des Felds price nur auf der ersten Seite festzulegen, wenn carrier.fee kleiner als 2 ist.
$lte in MongoDB
Syntax:
{ field: { $lte: value } }
$lte wählt Dokumente mit einem Feld-Wert aus, der kleiner oder gleich (d. h. =) dem angegebenen Wert ist.
Bei den meisten Datentypen führen Vergleichsoperatoren nur Vergleiche für Felder durch, wenn der BSON-Typ mit dem Typ des Abfragewerts übereinstimmt. Die Typklammerung von MongoDB ermöglicht jedoch einen begrenzten Cross-BSON-Vergleich.
Dokumentfelder abgleichen
Betrachten Sie das folgende Beispiel:
db.inventory.find( { quantity: { $lte: 20 } } )
Diese Abfrage selektiert alle Einträge in der Sammlung Inventar mit einem Mengenfeldwert kleiner oder gleich 20.
Ausgang:

Führen Sie die Aktualisierung basierend auf eingebetteten Dokumentfeldern durch
Das Feld Preis wird im folgenden Beispiel mithilfe eines $lte-Vergleichs mit einem Feld in einem eingebetteten Dokument festgelegt.
db.inventory.updateMany(
   { "carrier.fee": { $lte: 5 } }, { $set: { price: 9.99 } }
)
Ausgang:

Diese updateMany()-Funktion sucht in einem eingebetteten Dokument namens carrier nach einem fee-Unterfeld. Preis: 9.99 wird jedem Dokument hinzugefügt, wenn Gebühr einen Wert kleiner oder gleich 5 hat.
Wenn carrier.fee kleiner oder gleich 5 ist, verwenden Sie updateOne(), um den Wert des Felds price nur auf der ersten Seite zu ändern.
Die folgenden Informationen erläutern, wie Sie diese Syntax mithilfe der begleitenden Dokumente auf eine Datensammlung anwenden.
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 nachstehende Abfrage, um alle Dokumente zu finden, bei denen das Feld Tag zwischen zwei Datumsangaben liegt.
db.data.find({
    day: {
        $gt: ISODate("2020-01-21"),
        $lt: ISODate("2020-01-24")
    }
})
Die obige Abfrage gibt die folgenden Dokumente wie unten gezeigt 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 }
Finden Sie Dokumente nach einem bestimmten Datum in MongoDB
Verwenden Sie die folgende Abfrage, um alle Dokumente zu finden, bei denen das Feld Tag auf ein Datum nach einem bestimmten Datum eingestellt ist.
db.data.find({
    day: {
        $gt: ISODate("2020-01-22")
    }
})
Die obige Abfrage gibt die folgenden 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 }
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.
db.data.find({
    day: {
        $lt: ISODate("2020-01-22")
    }
})
Die obige Abfrage gibt die folgenden 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 }
Vergleich basierend auf dem Datum in MongoDB
Sehen wir uns an, wie Sie mit MongoDB eine datumsabhängige Abfrage zurückgeben.
Erstellen Sie mithilfe des Dokuments eine Sammlung namens Daten, um die Idee besser zu verstehen. Das Folgende ist die Abfrage zum Erstellen einer Sammlung, die einen Datensatz enthält.
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")
}
Mit der Funktion find() werden alle Dokumente einer Sammlung ausgewählt. Dazu folgt die Abfrage.
db.data queryFromDate.find().pretty();
Die obige Abfrage gibt die folgenden Dokumente zurück, wie im folgenden Screenshot gezeigt.

Das Folgende ist die datumsbasierte Rückgabeabfrage. Datensätze mit einem Erstellungsdatum nach 2018-05-19T11:10:23Z werden bezeichnet als:
> db.data queryFromDate.find({"PassengerArrivalTime" : { $gte : new ISODate("2018-05-19T11:10:23Z") }}).pretty();
Diese Abfrage gibt die folgenden Dokumente zurück, wie im folgenden Screenshot gezeigt.

Mithilfe dieses Artikels stieß der Benutzer also auf Informationen zur Verwendung der Methode Date(). Beispiele erläutern kurz die Befehle $gte und $lte.
Darüber hinaus wird die auf Daten basierende Rückfrage auch mit Codeschnipseln veranschaulicht.