$max
para obter o valor máximo dakey
matriz do campoa
, isso retornará-15
conforme seus documentos$filter
para obter um objeto igual a-15
valor$first
obter o primeiro objeto do resultado retornado de$filter
db.collection.aggregate([
{
$addFields: {
winner: {
$first: {
$filter: {
input: "$key",
cond: { $eq: ["$$this.a", { $max: "$key.a" }] }
}
}
}
}
}
])
Playground
Segunda opção usando
$reduce
operador, - definir o campo inicial
maxValue
em reduzir, valor máximo dakey
matriz do campoa
- verifique a condição se
maxValue
ea
valor corresponda e retorne o objeto máximo
db.collection.aggregate([
{
$addFields: {
winner: {
$reduce: {
input: "$key",
initialValue: { maxValue: { $max: "$key.a" } },
in: {
$cond: [
{ $eq: ["$$this.a", "$$value.maxValue"] },
"$$this",
"$$value"
]
}
}
}
}
}
])
Playground