Maison > interface Web > js tutoriel > Comment trier un champ de tableau intégré dans MongoDB ?

Comment trier un champ de tableau intégré dans MongoDB ?

Mary-Kate Olsen
Libérer: 2024-11-10 22:54:03
original
706 Les gens l'ont consulté

How to Sort an Embedded Array Field in MongoDB?

Tri des tableaux imbriqués dans MongoDB

Problème :
Comment trier un champ de tableau intégré dans un Document MongoDB, tel que le tableau des scores dans l'étudiant collection ?

Solution proposée :
En raison des limitations des capacités de tri natives de Mongo, vous devez utiliser soit le code d'application, soit MongoDB Aggregation Framework pour manipuler les tableaux intégrés.

Solution du cadre d'agrégation :
À l'aide du cadre d'agrégation MongoDB, vous pouvez effectuer la étapes suivantes pour trier le tableau des scores par ordre décroissant :

  1. Correspondance de documents : Faites correspondre le document souhaité à l'aide d'un index approprié, si disponible.
  2. Expansion du tableau : Déroulez le tableau des partitions pour créer un flux de documents pour chaque partition.
  3. Tapez Filtrage : Filtrez le flux pour sélectionner les scores d'un type spécifique (par exemple, « devoirs »).
  4. Tri : Triez les scores par ordre décroissant.

Agrégation Exemple :

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
    }}
])
Copier après la connexion

Sortie (échantillon) :

{
    "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
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal