-
$max
để nhận giá trị tối đa từkey
mảng trườnga
, điều này sẽ trả về-15
theo tài liệu của bạn -
$filter
để lấy đối tượng bằng-15
giá trị -
$first
lấy đối tượng đầu tiên từ kết quả trả về từ$filter
db.collection.aggregate([
{
$addFields: {
winner: {
$first: {
$filter: {
input: "$key",
cond: { $eq: ["$$this.a", { $max: "$key.a" }] }
}
}
}
}
}
])
Tùy chọn thứ hai sử dụng $reduce
nhà điều hành,
- đặt trường ban đầu
maxValue
giảm, giá trị lớn nhất từ key
mảng trườnga
- kiểm tra điều kiện nếu
maxValue
vàa
đối sánh giá trị rồi trả về đối tượng tối đa
db.collection.aggregate([
{
$addFields: {
winner: {
$reduce: {
input: "$key",
initialValue: { maxValue: { $max: "$key.a" } },
in: {
$cond: [
{ $eq: ["$$this.a", "$$value.maxValue"] },
"$$this",
"$$value"
]
}
}
}
}
}
])