mongodbコレクションのトップ "グローバル"値を取得したい。 のは、私はこのコレクションを持っているとしましょう:文書から複数のintを取得するそれらを値で指定し、それらを組み合わせてコレクションの上位の結果を得る
[{
"_id": 1,
"elo": {
"kit1": 1020,
"kit2": 1000,
"kit3": 1007
}
},
{
"_id": 2,
"elo": {
"kit1": 1041,
"kit2": 1065,
"kit3": 1051
}
}]
_id: 1
のグローバルELOは1009
と_id: 2
だろう1052
だろうだから私は期待していた結果は次のとおりです。
[
{
"_id": 2,
"global": 1052
},
{
"_id": 1,
"global": 1009
}
]
私が書かれていますこのクエリ:
([
{ $group: ("global": { $sum: "/*What to do here when I have multiple values*/" } } },
{ $sort: { "global": -1 } },
{ $limit: 10 }}
])
しかし、私はこの解決策になってしまった。これは
aggregate([
{ "$group": {"_id": "$_id", "global": {"$avg": "$elo"} } },
{ "$sort": { "global": -1 } },
{ "$limit": 10 }
]);
'kit1'、' kit2'、および 'kit3'フィールドは必要ですか? 'elo'フィールドが配列の場合、あなたのコレクションはまだ動作しますか? –
'group'の代わりに' project'を集約してください。https://docs.mongodb.com/manual/reference/operator/aggregation/avg/ – Yogesh
@JerodJohnsonはい、必要です。実際のキット名はこれとはまったく異なります例 – User