J'ai plusieurs documents qui ressemble à ceci:
{
"_id" : ObjectId("50b59cd75bed76f46522c34e"),
"player_id" : 0,
"league_id" : 2,
"results" : [
{ "discipline" : "football",
"score" : 25.15
},
{
"discipline" : "basketball",
"score" : 21.24
},
{
"discipline" : "cycling",
"score" : 68.19
},]
}
J'essaie d'agréger ces données. Tout d'abord déroulage tableau résultats, laissez seulement « le football » et « vélo », le nombre suivant moyenne des résultats. Cette partie que j'ai faite, et ça marche. Mon code:
db.grades.aggregate(
{$unwind:"$results"},
{$match: {$or: [{"results.discipline":"football"},{"results.discipline":"cycling"} ]}},
{$group:{_id:{player_id:"$player_id",league_id:"$league_id"}, 'average':{$avg:"$results.score"}}},
)
Ensuite, j'essaie d'agréger par league_id, cela signifie, les résultats moyens des joueurs dans les ligues spécifiques, ajouter au code ci-dessus: {$group:{_id:"$_id.league_id",aver_league:{$avg:$average}}}
Et par code ressemble à:
db.grades.aggregate(
{$unwind:"$results"},
{$match: {$or: [{"results.discipline":"football"},{"results.discipline":"cycling"} ]}},
{$group:{_id:{player_id:"$player_id",league_id:"$league_id"}, 'average':{$avg:"$results.score"}}},
{$group:{_id:"$_id.league_id",aver_league:{$avg:$average}}}
)
Affichages de la console: JavaScript execution failed: ReferenceError: $average is not defined.
Qu'est-ce qui ne va pas? Où ai-je fait une erreur? Est-il possible de regrouper par _id.league_id
?
voulez-vous dire {dérouleur $: "Résultats de $"}? –
Oui, '{$ unwind:" $ results "}', édité et corrigé. – tostao