MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Penyortiran MongoDB pada anak-anak

Anda dapat melakukannya dengan agregasi berikut:

db.collection.aggregate(
  [
    {
      $project: {
      group_id : { $cond : { if: { $ne: [ "$parentId", "" ] }, then: "$parentId", else: "$_id" }},
      count :1
      }
    },
    {
      $group: {
      _id : "$group_id",
      total_count : { $sum: "$count" }
      }
    },
    {
      $sort: {
      total_count : -1
      }
    }
  ]
);

Pertama saya memproyeksikan bidang tambahan "group_id" yang diisi dengan _id atau parentId tergantung dari nilai parentId. Bidang group_id digunakan untuk mengelompokkan dan menghitung total. Langkah terakhir adalah mengelompokkan pada total_count.

Saat Anda menggunakan mongoDb 3.4, Anda dapat melihat $graphLookup tetapi untuk saat ini saya meninggalkan Anda dengan agregasi pra 3.4;-)




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $stdDevPop

  2. Mungkin untuk mengisi dua tingkat?

  3. luwak - kemungkinan ketergantungan melingkar?

  4. Agregasi Mongo vs Java untuk loop dan kinerja

  5. Ekspor MySQL ke MongoDB