sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvordan kan jeg få top n spande til en sammenlægning og alle andre spande kombineret til en anden spand?

Det, du ønsker, kaldes vægtning . For at gøre det skal du tilføje en vægt til dine dokumenter ved at $project at bruge dem og bruge $cond operatør, og sorter dem derefter efter "vægt" i stigende anden og efter "indkøbsmængde" i faldende rækkefølge.

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

Hvilket returnerer:

{ "_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. Hvordan udsteder jeg HGET/GET-kommando til Redis Database via Node.js?

  2. Google Cloud Mongo DB:Ekstern IP forbinder ikke

  3. Redis som meddelelsesmægler

  4. Hent positionen for det valgte dokument i samlingen [mongoDB]