$max
um den maximalen Wert vonkey
zu erhalten Array des Feldesa
, dies gibt-15
zurück gemäß Ihren Unterlagen$filter
um ein Objekt zu erhalten, das gleich-15
ist Wert$first
Holen Sie sich das erste Objekt aus dem zurückgegebenen Ergebnis von$filter
db.collection.aggregate([
{
$addFields: {
winner: {
$first: {
$filter: {
input: "$key",
cond: { $eq: ["$$this.a", { $max: "$key.a" }] }
}
}
}
}
}
])
Zweite Option mit $reduce
Betreiber,
- Anfangsfeld
maxValue
setzen in Reduce, Maximalwert auskey
Array des Feldesa
- Bedingung prüfen, wenn
maxValue
unda
Wertübereinstimmung gibt dann maximales Objekt zurück
db.collection.aggregate([
{
$addFields: {
winner: {
$reduce: {
input: "$key",
initialValue: { maxValue: { $max: "$key.a" } },
in: {
$cond: [
{ $eq: ["$$this.a", "$$value.maxValue"] },
"$$this",
"$$value"
]
}
}
}
}
}
])