sql >> Database >  >> NoSQL >> MongoDB

MongoDB - krijg documenten met max attribuut per groep in een collectie

MongoDB-aggregatie biedt de $max operator, maar in uw geval wilt u het "hele" record zoals het is. Dus het juiste ding om hier te doen is $sort en gebruik dan de $first operator binnen een $group verklaring:

db.collection.aggregate([
    { "$sort": { "session": 1, "age": -1 } },
    { "$group": {
        "_id": "$session",
        "age": { "$first": "$age" },
        "firstName": { "$first" "$firstName" },
        "lastName": { "$first": "$lastName" }
    }}
])

Dus de "sortering" zorgt voor de juiste volgorde, en de "groepering" kiest de eerste instantie binnen de "groepering"-sleutel waar die velden bestaan.

Meestal $first hier omdat de $sort gebeurt in omgekeerde volgorde. Je kunt ook $last . gebruiken ook in oplopende volgorde.



  1. De beste manier om MongoDB te hosten op DigitalOcean

  2. Gegevens ophalen uit verzameling b niet in verzameling a in een MongoDB-shellquery

  3. ondersteunt hibernate-redis cache op het tweede niveau die wordt gedeeld door verschillende hibernate-instanties?

  4. Wat is de $unwind-operator in MongoDB?