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!