Heim > Artikel > Web-Frontend > Wie sortiere ich ein eingebettetes Score-Array 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!