Maison  >  Article  >  interface Web  >  Comment trier les tableaux intégrés dans les collections MongoDB ?

Comment trier les tableaux intégrés dans les collections MongoDB ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-07 07:27:03233parcourir

How to Sort Embedded Arrays in MongoDB Collections?

Tri des tableaux intégrés dans les collections MongoDB

Problème :

Vous avez une collection MongoDB de dossiers d'étudiants, chacun contenant un tableau intégré de scores. Vous souhaitez trier le tableau des scores par ordre décroissant de score pour un document spécifique.

Solution :

Pour trier un tableau intégré, vous pouvez utiliser soit le code d'application personnalisé ou le framework d'agrégation introduit dans MongoDB 2.2.

Utilisation de l'agrégation Framework :

Le pipeline d'agrégation de shell MongoDB suivant trie le tableau de scores du document avec _id 1 par ordre décroissant de score :

db.students.aggregate(
    { $match: {
        _id : 1
    }},
    { $unwind: '$scores' },
    { $match: {
        'scores.type': 'homework'
    }},
    { $sort: {
        'scores.score': -1
    }}
)

Sortie :

Cette agrégation produit le résultat suivant, affichant les résultats des devoirs triés pour l'élève avec _id 1 :

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