Maison  >  Article  >  interface Web  >  Comment trier un tableau de scores intégré dans MongoDB ?

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

Barbara Streisand
Barbara Streisandoriginal
2024-11-06 22:29:02624parcourir

How to Sort an Embedded Array of Scores in MongoDB?

Tri d'un tableau dans un enregistrement de collection dans MongoDB

Énoncé du problème

Considérez une collection de dossiers d'étudiants dans MongoDB, où chaque enregistrement comprend un tableau intégré de scores. La tâche consiste à trier le tableau des scores par ordre décroissant en fonction de la valeur du score.

Solution

En raison des limitations du langage de requête de MongoDB, manipuler directement le tableau intégré dans la requête elle-même n'est pas possible. Pour réaliser ce tri, vous pouvez explorer deux approches :

1. Tri au niveau de l'application

Extrayez le tableau des scores de la collection à l'aide d'une requête de recherche. Triez le tableau des scores par ordre décroissant dans le code de votre application. Mettez à jour l'enregistrement avec le tableau des scores triés dans MongoDB.

2. MongoDB Aggregation Framework

En utilisant le MongoDB Aggregation Framework, vous pouvez effectuer le tri dans MongoDB lui-même. Voici un exemple de pipeline d'agrégation qui trie les résultats des devoirs par ordre décroissant :

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

Exemple de sortie :

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