$max
pour obtenir la valeur maximale dekey
tableau du champa
, cela renverra-15
selon vos documents$filter
pour obtenir un objet égal à-15
valeur$first
obtenir le premier objet du résultat renvoyé par$filter
db.collection.aggregate([
{
$addFields: {
winner: {
$first: {
$filter: {
input: "$key",
cond: { $eq: ["$$this.a", { $max: "$key.a" }] }
}
}
}
}
}
])
Deuxième option utilisant $reduce
opérateur,
- définir le champ initial
maxValue
dans reduce, valeur maximale dekey
tableau du champa
- vérifier la condition si
maxValue
eta
la valeur correspond puis renvoie l'objet max
db.collection.aggregate([
{
$addFields: {
winner: {
$reduce: {
input: "$key",
initialValue: { maxValue: { $max: "$key.a" } },
in: {
$cond: [
{ $eq: ["$$this.a", "$$value.maxValue"] },
"$$this",
"$$value"
]
}
}
}
}
}
])