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
Freigeben: 2024-11-10 22:54:03
Original
655 Leute haben es durchsucht

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
    }}
])
Nach dem Login kopieren

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
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage