$max
aby uzyskać maksymalną wartość zkey
tablica polaa
, to zwróci-15
zgodnie z twoimi dokumentami$filter
aby uzyskać obiekt równy-15
wartość$first
pobierz pierwszy obiekt ze zwróconego wyniku z$filter
db.collection.aggregate([
{
$addFields: {
winner: {
$first: {
$filter: {
input: "$key",
cond: { $eq: ["$$this.a", { $max: "$key.a" }] }
}
}
}
}
}
])
Druga opcja przy użyciu $reduce
operator,
- ustaw pole początkowe
maxValue
w zmniejszeniu, maksymalna wartość zkey
tablica polaa
- sprawdź warunek, jeśli
maxValue
ia
dopasowanie wartości, a następnie zwróć maksymalny obiekt
db.collection.aggregate([
{
$addFields: {
winner: {
$reduce: {
input: "$key",
initialValue: { maxValue: { $max: "$key.a" } },
in: {
$cond: [
{ $eq: ["$$this.a", "$$value.maxValue"] },
"$$this",
"$$value"
]
}
}
}
}
}
])