$max
per ottenere il valore massimo dakey
matrice del campoa
, questo restituirà-15
secondo i tuoi documenti$filter
per ottenere un oggetto uguale a-15
valore$first
ottieni il primo oggetto dal risultato restituito da$filter
db.collection.aggregate([
{
$addFields: {
winner: {
$first: {
$filter: {
input: "$key",
cond: { $eq: ["$$this.a", { $max: "$key.a" }] }
}
}
}
}
}
])
Seconda opzione usando $reduce
operatore,
- imposta il campo iniziale
maxValue
in riduci, valore massimo dakey
matrice del campoa
- verifica la condizione se
maxValue
ea
corrisponde al valore, quindi restituisce il massimo oggetto
db.collection.aggregate([
{
$addFields: {
winner: {
$reduce: {
input: "$key",
initialValue: { maxValue: { $max: "$key.a" } },
in: {
$cond: [
{ $eq: ["$$this.a", "$$value.maxValue"] },
"$$this",
"$$value"
]
}
}
}
}
}
])