$max
om maximale waarde te krijgen vankey
array van velda
, dit geeft-15
. terug volgens uw documenten$filter
om een object te krijgen dat gelijk is aan-15
waarde$first
haal het eerste object uit het geretourneerde resultaat van$filter
db.collection.aggregate([
{
$addFields: {
winner: {
$first: {
$filter: {
input: "$key",
cond: { $eq: ["$$this.a", { $max: "$key.a" }] }
}
}
}
}
}
])
Tweede optie met $reduce
telefoniste,
- initieel veld instellen
maxValue
in verkleinen, maximale waarde vankey
array van velda
- controleer de voorwaarde als
maxValue
ena
waarde match en retourneer max object
db.collection.aggregate([
{
$addFields: {
winner: {
$reduce: {
input: "$key",
initialValue: { maxValue: { $max: "$key.a" } },
in: {
$cond: [
{ $eq: ["$$this.a", "$$value.maxValue"] },
"$$this",
"$$value"
]
}
}
}
}
}
])