Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Mengisih Tatasusunan Terbenam dalam MongoDB dalam Susunan Menurun?

Bagaimana untuk Mengisih Tatasusunan Terbenam dalam MongoDB dalam Susunan Menurun?

Susan Sarandon
Susan Sarandonasal
2024-11-10 03:12:02741semak imbas

How to Sort Embedded Arrays in MongoDB in Descending Order?

Mengisih Tatasusunan Terbenam dalam MongoDB

Soalan:

Bagaimana saya boleh mengisih tatasusunan skor dalam setiap rekod pelajar dalam koleksi MongoDB dalam susunan menurun sebanyak markah?

Masalah:

Pertimbangkan rekod pelajar berikut:

{
  "_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
    }
  ]
}

Percubaan untuk mengulang secara manual tatasusunan skor menggunakan JavaScript terbenam dalam cangkerang mongo menggesa an ralat.

Penyelesaian:

Untuk mengisih tatasusunan skor, pertimbangkan saluran paip Rangka Kerja Pengagregatan MongoDB berikut:

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

Output ( Sampel):

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

Atas ialah kandungan terperinci Bagaimana untuk Mengisih Tatasusunan Terbenam dalam MongoDB dalam Susunan Menurun?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn