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

Find alle dokumenter, der deler max(værdi) fundet i aggregeret trin

Du kan gøre dette ved at gruppere på num_sold og derefter bruge $sort og $limit pipeline-trin for kun at få dokumenterne med den maksimale værdi:

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}
])

Output:

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



  1. MongoDB 3 Java tjek om samling findes

  2. Mongoose flere forbindelser

  3. MongoDB findAndModify. Er det virkelig atomare? Hjælp med at skrive en lukket opdateringsløsning

  4. Samlet $gruppe for flere datointervaller