Maison > interface Web > js tutoriel > Comment trier les tableaux intégrés dans MongoDB par ordre décroissant ?

Comment trier les tableaux intégrés dans MongoDB par ordre décroissant ?

Susan Sarandon
Libérer: 2024-11-10 03:12:02
original
720 Les gens l'ont consulté

How to Sort Embedded Arrays in MongoDB in Descending Order?

Tri du tableau intégré dans MongoDB

Question :

Comment puis-je trier le tableau des scores dans chaque dossier d'étudiant dans une collection MongoDB par ordre décroissant de score ?

Problème :

Considérez le dossier d'élève suivant :

{
  "_id": 1,
  "name": "Aurelia Menendez",
  "scores": [
    {
      "type": "exam",
      "score": 60.06045071030959
    },
    {
      "type": "quiz",
      "score": 52.79790691903873
    },
    {
      "type": "homework",
      "score": 71.76133439165544
    },
    {
      "type": "homework",
      "score": 34.85718117893772
    }
  ]
}
Copier après la connexion

Une tentative de parcourir manuellement le tableau des scores à l'aide de JavaScript intégré dans le shell mongo invite un erreur.

Solution :

Pour trier le tableau des scores, considérez le pipeline MongoDB Aggregation Framework suivant :

db.students.aggregate(
  // Match the document (uses index if suitable)
  { $match: {
      _id: 1
  }},
  // Unwind scores array
  { $unwind: '$scores' },
  // Filter to specific score type (optional)
  { $match: {
      'scores.type': 'homework'
  }},
  // Sort scores array
  { $sort: {
      'scores.score': -1
  }}
)
Copier après la connexion

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