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
Mary-Kate Olsenoriginal
2024-11-10 22:54:03649parcourir

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
    }}
])

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
}

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:
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