sql >> Databasteknik >  >> NoSQL >> MongoDB

Hitta alla dokument som delar max(värde) som hittats i aggregerat steg

Du kan göra detta genom att gruppera på num_sold och sedan använda $sort och $limit pipeline-steg för att bara få dokumenten med det maximala värdet:

db.t.aggregate([
    // Group by num_sold, assembling an array of docs with each distinct value.
    {$group: {
        _id: '$num_sold',
        docs: {$push: '$$ROOT'}
    }},
    // Sort the groups by _id descending to put the max num_sold group first.
    {$sort: {_id: -1}},
    // Return just the first (max num_sold) group of docs.
    {$limit: 1}
])

Utdata:

{ 
    "_id" : 55.0, 
    "docs" : [
        {
            "_id" : ObjectId("5726a62879ce3350ff8d607e"), 
            "item" : "Orange", 
            "num_sold" : 55.0
        }, 
        {
            "_id" : ObjectId("5726a62879ce3350ff8d607f"), 
            "item" : "Peach", 
            "num_sold" : 55.0
        }
    ]
}



  1. Varför definieras alert, och två rader senare är det inte (Meteor)?

  2. Autentisering under anslutning till MongoDB-serverinstans med Java

  3. fjäderservern kan inte ansluta till redis med jedis-klienten

  4. mongodump Misslyckades:dåligt alternativ:kan bara dumpa en enda samling till stdout