sql >> Database >  >> NoSQL >> MongoDB

Hoe kan ik top n buckets krijgen voor een aggregatie en alle andere buckets gecombineerd in een andere bucket?

Wat je wilt heet weging . Om dat te doen, moet u een gewicht aan uw documenten toevoegen door $project ze en gebruik de $cond en sorteer ze vervolgens op "gewicht" in oplopende andere en op "aankoop" in aflopende volgorde.

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

Wat terugkomt:

{ "_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. Hoe de waarden van mijn MongoDB-query een const te krijgen

  2. Twee documenten vinden in MongoDB die een sleutelwaarde delen

  3. Hoe kunnen we Paginering voor Mongodb Collection implementeren met behulp van mongoTemplate

  4. Laatst ingevoegde document-ID in MongoDB ophalen met Java-stuurprogramma