$max
získat maximální hodnotu zkey
pole polea
, vrátí to-15
podle vašich dokumentů$filter
získat objekt rovný-15
hodnotu$first
získat první objekt z vráceného výsledku z$filter
db.collection.aggregate([
{
$addFields: {
winner: {
$first: {
$filter: {
input: "$key",
cond: { $eq: ["$$this.a", { $max: "$key.a" }] }
}
}
}
}
}
])
Druhá možnost pomocí $reduce
operátor,
- nastavte počáteční pole
maxValue
v redukovat, maximální hodnota zkey
pole polea
- zkontrolujte podmínku, pokud
maxValue
aa
value match pak vrátí max object
db.collection.aggregate([
{
$addFields: {
winner: {
$reduce: {
input: "$key",
initialValue: { maxValue: { $max: "$key.a" } },
in: {
$cond: [
{ $eq: ["$$this.a", "$$value.maxValue"] },
"$$this",
"$$value"
]
}
}
}
}
}
])