我有几个类似于这样的文档:
{
"_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
},]
}
我尝试聚合这些数据。首先展开结果数组,然后只保留“足球”和“骑行”,接下来计算平均值。这部分我已经完成,并且它是有效的。 我的代码:
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"}}},
)
然后我尝试按照 league_id 进行聚合,也就是说,在特定联赛中平均球员的结果,将其添加到上面的代码中:
{$group:{_id:"$_id.league_id",aver_league:{$avg:$average}}}
现在代码看起来像这样:
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}}}
)
控制台显示:JavaScript执行失败:ReferenceError:$average未定义。
出了什么问题?我犯了什么错误?是否可以按_id.league_id
聚合?
{$group:{_id:"$_id.league_id",aver_league:{$avg:$average}}}
。因为这是一个问题。 - tostao