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

Bagaimana saya bisa mendapatkan n ember teratas untuk agregasi dan semua ember lainnya digabungkan ke dalam ember lain?

Apa yang Anda inginkan disebut weighting . Untuk melakukannya, Anda perlu menambahkan bobot pada dokumen Anda dengan $project ing mereka dan menggunakan $cond operator, lalu urutkan berdasarkan "bobot" dalam urutan menaik lainnya dan menurut "jumlah pembelian" dalam urutan menurun.

db.collection.aggregate([
    { "$project": { 
        "purchasequantity": 1, 
        "w": { 
            "$cond": [ { "$eq": [ "$_id", "others" ] }, 1, 0 ] 
        } 
    }}, 
    { "$sort": { "w": 1, "purchasequantity": -1 } } 
])

Yang mengembalikan:

{ "_id" : "customer100", "purchasequantity" : 4000000, "w" : 0 }
{ "_id" : "customer5", "purchasequantity" : 81800, "w" : 0 }
{ "_id" : "customer4", "purchasequantity" : 40900, "w" : 0 }
{ "_id" : "customer3", "purchasequantity" : 440, "w" : 0 }
{ "_id" : "customer1", "purchasequantity" : 300, "w" : 0 }
{ "_id" : "others", "purchasequantity" : 29999, "w" : 1 }



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. NestJS:Cara Menerapkan Otentikasi Pengguna Berbasis Sesi

  2. Meteor:perbedaan antara nama untuk koleksi, variabel, publikasi, dan langganan?

  3. Pemantauan &Manajemen Operasi MongoDB 4.0 Dengan ClusterControl

  4. Bagaimana saya bisa menambahkan gambar di mongoDB?

  5. Kasus untuk Indeks Hash MongoDB