MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

MongoDB - obtenha documentos com atributo max por grupo em uma coleção


A agregação do MongoDB oferece o $max operador, mas no seu caso você quer o registro "inteiro" como está. Portanto, a coisa apropriada a fazer aqui é $sort e, em seguida, use o $first operador dentro de um $group demonstração:
db.collection.aggregate([
    { "$sort": { "session": 1, "age": -1 } },
    { "$group": {
        "_id": "$session",
        "age": { "$first": "$age" },
        "firstName": { "$first" "$firstName" },
        "lastName": { "$first": "$lastName" }
    }}
])

Portanto, a "classificação" obtém a ordem correta e o "agrupamento" escolhe a primeira ocorrência dentro da chave "agrupamento" onde esses campos existem.

Principalmente $first aqui porque o $sort é feito na ordem inversa. Você também pode usar $last quando em ordem crescente também.