Heim >Web-Frontend >js-Tutorial >Wie sortiere ich ein eingebettetes Array-Feld in MongoDB?

Wie sortiere ich ein eingebettetes Array-Feld in MongoDB?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-10 22:54:03651Durchsuche

How to Sort an Embedded Array Field in MongoDB?

Sortieren verschachtelter Arrays in MongoDB

Problem:
Wie sortiert man ein eingebettetes Array-Feld in einem MongoDB-Dokument, z. B. das Punkte-Array in der Studentensammlung?

Vorgeschlagene Lösung:
Aufgrund von Einschränkungen in den nativen Sortierfunktionen von Mongo müssen Sie entweder Anwendungscode oder MongoDB-Aggregation verwenden Framework zum Bearbeiten eingebetteter Arrays.

Aggregation Framework-Lösung:
Mit dem MongoDB Aggregation Framework können Sie die folgenden Schritte ausführen, um das Scores-Array in absteigender Reihenfolge zu sortieren:

  1. Dokumentenübereinstimmung: Ordnen Sie das gewünschte Dokument mithilfe eines geeigneten Index zu, sofern verfügbar.
  2. Array-Erweiterung: Entwickeln Sie das Scores-Array, um einen Stream von zu erstellen Dokumente für jede Partitur.
  3. Typfilterung:Filtern Sie den Stream, um Partituren eines bestimmten Typs auszuwählen (z. B. „Hausaufgaben“).
  4. Sortierung: Sortieren Sie die Ergebnisse in absteigender Reihenfolge.

Aggregationsbeispiel:

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

Ausgabe (Beispiel):

{
    "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 Array-Feld 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