-
$max
key
から最大値を取得するには フィールドの配列a
、これは-15
を返します あなたの文書に従って -
$filter
-15
に等しいオブジェクトを取得します 値 -
$first
$filter
から返された結果から最初のオブジェクトを取得します
db.collection.aggregate([
{
$addFields: {
winner: {
$first: {
$filter: {
input: "$key",
cond: { $eq: ["$$this.a", { $max: "$key.a" }] }
}
}
}
}
}
])
$reduce
を使用する2番目のオプション オペレーター、
- 初期フィールド
maxValue
を設定します 削減では、key
からの最大値 フィールドの配列a
-
maxValue
の場合は条件を確認します およびa
値が一致し、最大オブジェクトを返します
db.collection.aggregate([
{
$addFields: {
winner: {
$reduce: {
input: "$key",
initialValue: { maxValue: { $max: "$key.a" } },
in: {
$cond: [
{ $eq: ["$$this.a", "$$value.maxValue"] },
"$$this",
"$$value"
]
}
}
}
}
}
])