Maison > interface Web > js tutoriel > le corps du texte

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

Barbara Streisand
Libérer: 2024-11-06 22:29:02
original
623 Les gens l'ont consulté

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

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
}
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!

source:php.cn
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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!