Sortieren einer Sammlung nach Datum in MongoDB

Tahseen Tauseef 20 Juni 2023
  1. Verwenden Sie die sort()-Funktion in MongoDB
  2. Sortieren nach Datum (aufsteigend oder absteigend) in MongoDB
  3. Sortieren nach einer Datumszeichenfolge in MongoDB
  4. Sortieren nach Datum mit Array in MongoDB
Sortieren einer Sammlung nach Datum in MongoDB

In diesem MongoDB-Tutorial wird das Problem des Sortierens einer Sammlung in MongoDB besprochen. Verschiedene Methoden zum Sortieren der Sammlung in der Datenbank werden kurz erläutert.

Verwenden Sie die sort()-Funktion 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.

Beispiel:

db.posts.find().pretty()
{
    "_id" : 1,
    "title" : "MongoDB",
    "body" : "MongoDB is an open-source database",
    "date" : "2021-01-01T00:00:00.000Z",
        "Country" : "United Kingdom"
}
{
    "_id" : 2,
    "title" : "MySQL",
    "body" : "MySQL is a popular open-source relational database management system",
    "date" : ISODate("2020-01-01T00:00:00Z"),
        "Country" : "United States of America"
}
{
    "_id" : 3,
    "title" : "SQL",
    "body" : "SQL is a database computer language",
    "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.

db.posts.find().sort({ date: 1 }).pretty()
{
    "_id" : 1,
    "title" : "MongoDB",
    "body" : "MongoDB is an open-source database",
    "date" : "2021-01-01T00:00:00.000Z",
        "Country" : "United Kingdom"
}
{
    "_id" : 2,
    "title" : "MySQL",
    "body" : "MySQL is a popular open-source relational database management system",
    "date" : ISODate("2020-01-01T00:00:00Z"),
        "Country" : "United States of America"
}
{
    "_id" : 3,
    "title" : "SQL",
    "body" : "SQL is a database computer language",
    "date" : ISODate("2021-01-01T00:00:00Z"),
        "Country" : "New Zealand"
}

Nach dem Sortieren hat das erste Dokument eine Datumszeichenfolge und kein Datumsobjekt. Der Datumsstring erscheint zuerst, auch wenn das Datum in Dokument 2 später liegt.

Sortieren nach Datum (aufsteigend oder absteigend) in MongoDB

Um Daten in MongoDB in absteigender Reihenfolge zu sortieren, verwenden Sie die Funktion sort() und geben Sie Parameter wie den Datumsfeldnamen und die Richtung (aufsteigende oder absteigende Reihenfolge) an.

Syntax:

sort(date : 1) #For ascending order
sort(date : -1) #For descending order

Beispiel:

 db.product.find().pretty()
{
        "_id" : 1,
        "item" : {
                "name" : "HighLander",
                "type" : "toyota"
        },
        "price" : 2.8
        "date" : "2021-01-01T00:00:00.000Z"
}
{
        "_id" : 2,
        "item" : {
                "name" : "Swift",
                "type" : "suzuki"
        },
        "price" : 3.9
        "date" : ISODate("2020-01-01T00:00:00Z")
}
{
        "_id" : 3,
        "item" : {
                "name" : "Mirage G4",
                "type" : "mitsubishi"
        },
        "price" : 3.2
        "date" : ISODate("2021-01-01T00:00:00Z")
}

Dies sind die Dokumente, die in die Produktdatenbank eingefügt wurden. Nun wird absteigend sortiert.

Anfrage:

db.product.find().sort(date:-1).pretty()
{
        "_id" : 3,
        "item" : {
                "name" : "Mirage G4",
                "type" : "mitsubishi"
        },
        "price" : 3.2
        "date" : ISODate("2021-01-01T00:00:00Z")
}
{
        "_id" : 2,
        "item" : {
                "name" : "Swift",
                "type" : "suzuki"
        },
        "price" : 3.9
        "date" : ISODate("2020-01-01T00:00:00Z")
}
{
        "_id" : 1,
        "item" : {
                "name" : "HighLander",
                "type" : "toyota"
        },
        "price" : 2.8
        "date" : "2021-01-01T00:00:00.000Z"
}

Sortieren nach einer Datumszeichenfolge in MongoDB

Es gibt zwei alternative Techniken in MongoDB zum Speichern von Datum/Uhrzeit. Das Datumsobjekt wird in der ersten Methode verwendet, um das Datum in den Dokumenten zu speichern.

Syntax:

new Date();

Anfrage:

db.product.insertOne({ "productId" : 101, "productDeliveryDateTime": new Date() });
{
        "acknowledged" : true,
        "insertedId" : ObjectId("611c9e39e1fdc428cf238757")
}

Das Produkt ist der Name der Kollektion und das Objekt Date() wurde verwendet, um ein Datumsfeld einzufügen.

Um die Datumsspalte in der Datenbank zu speichern, müssen Sie in der zweiten Methode ISODate() verwenden. Die International Organization for Standardization (ISO) ist eine gemeinnützige Organisation, die sich der Entwicklung internationaler Standards verschrieben hat.

Syntax:

new ISODate();

Anfrage:

db.product.insertOne({ "productId" : 102, "productDeliveryDateTime": new ISODate() });
{
        "acknowledged" : true,
        "insertedId" : ObjectId("611c9e39e1fdc428cf238758")
}

Hier wird das Datumsfeld mittels ISODate(). in die Produktsammlung eingefügt. Sie können alle Dokumente mit der Methode find() anzeigen:

db.product.find().pretty()
{
        "_id" : ObjectId("611c9e39e1fdc428cf238757"),
        "productId" : 101,
        "productDeliveryDateTime" : ISODate("2021-08-18T05:44:25.081Z")
}
{
        "_id" : ObjectId("611ca108e1fdc428cf238758"),
        "productId" : 102,
        "productDeliveryDateTime" : ISODate("2021-08-18T05:56:24.144Z")
}

Der zugänglichste Ansatz zum Speichern von Datum/Uhrzeit ist die Verwendung des Date-Objekts.

Wenn ein Dokument sowohl die Date()-String-Methode als auch die ISODate()-Methode hat, sortiert MongoDB es in Richtung der Date()-String-Methode (in aufsteigender oder absteigender Reihenfolge). Es ist erwähnenswert, dass nach dem Sortieren das erste angezeigte Dokument eine Datumszeichenfolge und kein Date-Objekt ist.

Dieses erscheint zuerst, obwohl sein Datum nach dem Datum in Dokument 2 liegt.

Anfrage:

 db.language.find().pretty()
{
        "_id" : 1,
        "item" : {
                "name" : "Python",
                "type" : "Very high level dynamic data types"
        },
        "price" : 2.8,
        "date" : "2021-01-10T00:00:00.000Z"
}
{
        "_id" : 2,
        "item" : {
                "name" : "C++",
                "type" : "High-level computer programming language"
        },
        "price" : 3.9,
        "date" : ISODate("2020-12-01T00:00:00Z")
}
{
        "_id" : 3,
        "item" : {
                "name" : "Java",
                "type" : "Java is a high-level, class-based, object-oriented programming language"
        },
        "price" : 3.2,
        "date" : ISODate("2021-08-01T00:00:00Z")
}

Dies sind einige der Dokumente, die der Sprachsammlung hinzugefügt wurden. Sie können auch die Funktion sort() verwenden, um sie zu sortieren.

Anfrage:

 db.language.find().sort(date:1).pretty()
{
        "_id" : 1,
        "item" : {
                "name" : "Python",
                "type" : "Very high level dynamic data types"
        },
        "price" : 2.8,
        "date" : "2021-01-10T00:00:00.000Z"
}
{
        "_id" : 3,
        "item" : {
                "name" : "Java",
                "type" : "Java is a high-level, class-based, object-oriented programming language"
        },
        "price" : 3.2,
        "date" : ISODate("2021-08-01T00:00:00Z")
}
{
        "_id" : 2,
        "item" : {
                "name" : "C++",
                "type" : "High-level computer programming language"
        },
        "price" : 3.9,
        "date" : ISODate("2020-12-01T00:00:00Z")
}

Nachdem Sie alle Daten in aufsteigender Reihenfolge sortiert haben, können Sie mithilfe des Datumsfelds beobachten. Das erste Feld ist das Datumszeichenfolgenfeld. Der einfachste Weg, Datum/Uhrzeit zu speichern, ist die Verwendung des Date-Objekts.

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.

  1. Denken Sie immer daran, dass Sie die Daten in einer Sammlung speichern.
  2. Es gibt zwei Möglichkeiten, das Datumsfeld im Dokument zu speichern.
  3. Die Zeichenfolge Date() und der Datentyp ISODate() werden verwendet, um das Datum in Dokumenten zu speichern.
  4. Wenn Sie das Datumsfeld mit der Methode sort() sortieren, prüfen Sie, welchen Datentyp Sie verwendet haben.

Anfrage:

db.document.insertOne({ "productId" : 1001, "productDeliveryDateTime": new Date() });
{
        "acknowledged" : true,
        "insertedId" : ObjectId("611c9e39e1fdc428cf238802")
}

Das Datum wird in diesem Beispiel mit der Zeichenfolge Date() hinzugefügt, und der Sammlungsname ist document. Auf die gleiche Weise können Sie mit ISODate() ein Datum in das Dokument einfügen.

Sortieren nach Datum mit Array in MongoDB

Verwenden Sie die Funktion sort(), um mithilfe eines Arrays in MongoDB nach Datum zu sortieren. Sie müssen das Datumsfeld und die Sortierrichtung in der Funktion angeben (aufsteigend oder absteigend).

Fügen Sie im folgenden Beispiel einige Daten in einem Array-Format zur Sammlung hinzu.

 db.student.insertMany([
      {
        "name"      : "Tom",
        "age"       : 21,
        "timestamp" : new ISODate("2021-04-01" )
      },
      {
        "name"      : "Emma",
        "age"       : 25,
        "timestamp" : new ISODate("2021-10-31" )
      },
      {
        "name"      : "John",
        "age"       : 29,
        "timestamp" : new ISODate("2021-05-02")
      }
]) 
{
        "acknowledged" : true,
        "insertedIds" : [
                ObjectId("611df0e76cc7e05e5e7fe74b"),
                ObjectId("611df0e76cc7e05e5e7fe74c"),
                ObjectId("611df0e76cc7e05e5e7fe74d")
        ]
}

Der student ist der Name der Sammlung, und die Methode ISODate() wird verwendet, um das Datum einzugeben. Die String-Methode Date() ist ebenfalls verfügbar.

Anfrage:

 db.student.find().sort({timestamp:1}).pretty()

{
        "_id" : ObjectId("611df0e76cc7e05e5e7fe74b"),
        "name" : "Tom",
        "age" : 21,
        "timestamp" : ISODate("2021-04-01T00:00:00Z")
}
{
        "_id" : ObjectId("611df0e76cc7e05e5e7fe74d"),
        "name" : "John",
        "age" : 29,
        "timestamp" : ISODate("2021-05-02T00:00:00Z")
}
{
        "_id" : ObjectId("611df0e76cc7e05e5e7fe74c"),
        "name" : "Emma",
        "age" : 25,
        "timestamp" : ISODate("2021-10-31T00:00:00Z")
}

Alle Dokumente sind aufsteigend sortiert, zusätzlich kommt die Funktion pretty() zum Einsatz. Auf diese Weise können Sie das Ergebnis in lesbarer Form bereitstellen.

In diesem Artikel wird das Sortieren von Sammlungen in MongoDB mit verschiedenen Methoden in aufsteigender und absteigender Reihenfolge im Detail erläutert.

Verwandter Artikel - MongoDB Sort