$max
за да получите максимална стойност отkey
масив от полеa
, това ще върне-15
според вашите документи$filter
за да получите обект, който е равен на-15
стойност$first
вземете първия обект от върнат резултат от$filter
db.collection.aggregate([
{
$addFields: {
winner: {
$first: {
$filter: {
input: "$key",
cond: { $eq: ["$$this.a", { $max: "$key.a" }] }
}
}
}
}
}
])
Втора опция, използваща $reduce
оператор,
- задаване на начално поле
maxValue
в намаляване, максимална стойност отkey
масив от полеa
- проверете условието, ако
maxValue
иa
съвпадение на стойността, след което върне максимален обект
db.collection.aggregate([
{
$addFields: {
winner: {
$reduce: {
input: "$key",
initialValue: { maxValue: { $max: "$key.a" } },
in: {
$cond: [
{ $eq: ["$$this.a", "$$value.maxValue"] },
"$$this",
"$$value"
]
}
}
}
}
}
])