Heim  >  Artikel  >  Web-Frontend  >  Wie sortiere ich ein eingebettetes Score-Array in MongoDB?

Wie sortiere ich ein eingebettetes Score-Array in MongoDB?

Barbara Streisand
Barbara StreisandOriginal
2024-11-06 22:29:02624Durchsuche

How to Sort an Embedded Array of Scores in MongoDB?

Array innerhalb eines Sammlungsdatensatzes in MongoDB sortieren

Problemstellung

Betrachten Sie eine Sammlung von Schülerdatensätze in MongoDB, wobei jeder Datensatz ein eingebettetes Array von Punktzahlen enthält. Die Aufgabe besteht darin, das Scores-Array in absteigender Reihenfolge basierend auf dem Score-Wert zu sortieren.

Lösung

Aufgrund der Einschränkungen der Abfragesprache von MongoDB wird das eingebettete Array direkt manipuliert innerhalb der Abfrage selbst ist nicht möglich. Um diese Sortierung zu erreichen, können Sie zwei Ansätze ausprobieren:

1. Sortierung auf Anwendungsebene

Extrahieren Sie das Scores-Array mithilfe einer Suchabfrage aus der Sammlung. Sortieren Sie das Scores-Array in Ihrem Anwendungscode in absteigender Reihenfolge. Aktualisieren Sie den Datensatz mit dem sortierten Scores-Array zurück in MongoDB.

2. MongoDB Aggregation Framework

Mithilfe des MongoDB Aggregation Framework können Sie die Sortierung innerhalb von MongoDB selbst durchführen. Hier ist eine Beispiel-Aggregationspipeline, die Hausaufgabenergebnisse in absteigender Reihenfolge sortiert:

db.students.aggregate([
    { $match: { _id: 1 } },  // Initial document match
    { $unwind: '$scores' },  // Expand scores array into individual documents
    { $match: { 'scores.type': 'homework' } },  // Filter to homework scores
    { $sort: { 'scores.score': -1 } },  // Sort in descending order
])

Beispielausgabe:

{
    "result" : [
        {
            "_id" : 1,
            "name" : "Aurelia Menendez",
            "scores" : {
                "type" : "homework",
                "score" : 71.76133439165544
            }
        },
        {
            "_id" : 1,
            "name" : "Aurelia Menendez",
            "scores" : {
                "type" : "homework",
                "score" : 34.85718117893772
            }
        }
    ],
    "ok" : 1
}

Das obige ist der detaillierte Inhalt vonWie sortiere ich ein eingebettetes Score-Array in MongoDB?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn