sql >> Database >  >> NoSQL >> MongoDB

Vind alle documenten die max(waarde) delen gevonden in geaggregeerde stap

U kunt dit doen door te groeperen op num_sold en gebruik dan $sort en $limit pijplijnfasen om alleen de documenten met de maximale waarde te krijgen:

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

Uitgang:

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



  1. Diff() tussen twee collecties in MongoDB

  2. Hoe haal je alle sleutels die overeenkomen met een specifiek patroon uit een hash in redis?

  3. Waarom gebruikt MongoDB *client* in dit geval meer geheugen dan de server?

  4. mongodb probleem met open verbinding