$max
for at få maks. værdi frakey
matrix af felta
, vil dette returnere-15
i henhold til dine dokumenter$filter
for at få et objekt, der er lig med-15
værdi$first
få det første objekt fra returneret resultat fra$filter
db.collection.aggregate([
{
$addFields: {
winner: {
$first: {
$filter: {
input: "$key",
cond: { $eq: ["$$this.a", { $max: "$key.a" }] }
}
}
}
}
}
])
Anden mulighed ved at bruge $reduce
operatør,
- indstil indledende felt
maxValue
i reducere, maksimal værdi frakey
matrix af felta
- kontroller tilstanden hvis
maxValue
oga
værdi match og returner derefter max objekt
db.collection.aggregate([
{
$addFields: {
winner: {
$reduce: {
input: "$key",
initialValue: { maxValue: { $max: "$key.a" } },
in: {
$cond: [
{ $eq: ["$$this.a", "$$value.maxValue"] },
"$$this",
"$$value"
]
}
}
}
}
}
])