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

MongoDB - få dokumenter med max attribut per gruppe i en samling

MongoDB-aggregation tilbyder $max operatør, men i dit tilfælde vil du have "hele" posten, som den er. Så den passende ting at gøre her er $sort og brug derefter $first operatør inden for en $group erklæring:

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

Så "sorteringen" får den rigtige rækkefølge, og "grupperingen" vælger den første forekomst inden for "gruppering"-nøglen, hvor disse felter findes.

For det meste $first her fordi $sort sker i omvendt rækkefølge. Du kan også bruge $last også i stigende rækkefølge.



  1. Klasse 'MongoDB\Driver\Manager' blev ikke fundet

  2. Alternativer til indlejrede strukturer i Redis?

  3. Big Data Processing Engines – Hvilken skal jeg bruge?:Del 1

  4. Hvad er den bedste strategi til at synkronisere Redis-data til MySQL?