我试着用一种简单的方法来平均和总结一些统计数据,但却碰上了一堵墙!
我收集了一些文件,其中包含如下统计数据:
{
"playerId": "5c6024b5031f5bc44d790e01",
"courseId": "5b2a0ab1c6dc0f04e9a1e769",
"gir": true,
"data": {
"roundHoles": [
{
"type": "HoleData",
"holeNo": 1,
"par": 3,
"hcp": 18
},
{
"type": "HoleData",
"holeNo": 2,
"par": 4,
"hcp": 4
},
{
"type": "HoleData",
"holeNo": 3,
"par": 4,
"hcp": 8
}
],
"holeScores": [
{
"type": "RoundHoleData",
"strokes": 3,
"points": 2,
"puts": 1,
"gir": true,
"scrambled": false
},
{
"type": "RoundHoleData",
"strokes": 5,
"points": 1,
"puts": 2,
"gir": false,
"scrambled": false
},
{
"type": "RoundHoleData",
"strokes": 4,
"points": 2,
"puts": 1,
"gir": false,
"scrambled": true
}
}
}
}
我想做的是得到平均笔划,点数和推杆,加扰和gir之和,如果为真,但只有当主“gir”设置为真。
以下是我到目前为止得出的结论:
var allScores = runtimeCollection('roundScores').aggregate(
{
$match: { "playerId": playerId, "courseId": "5b2a0ab1c6dc0f04e9a1e769" }
},
{
$unwind: {
path: "$data.holeScores",
includeArrayIndex: "index"
}
},
{
$group: {
_id: "$index",
rounds: { $sum: 1 },
avgStrokes: { $avg: "$data.holeScores.strokes" },
avgPoints: { $avg: "$data.holeScores.points" },
avgPuts: { $avg: "$data.holeScores.puts" },
sumScrambles: { $sum: "$data.holeScores.scrambled" }
}
}
);
以下是我从中得到的:
{
"_id": 17,
"rounds": 18,
"avgStrokes": 3.4444444444444446,
"avgPoints": 1.2777777777777777,
"avgPuts": 1.6111111111111112,
"sumScrambles": 0
},
{
"_id": 14,
"rounds": 18,
"avgStrokes": 5.388888888888889,
"avgPoints": 2.1666666666666665,
"avgPuts": 1.5,
"sumScrambles": 0
},
{
"_id": 12,
"rounds": 18,
"avgStrokes": 5,
"avgPoints": 1.6111111111111112,
"avgPuts": 1.8333333333333333,
"sumScrambles": 0
}
看起来我得到的平均部分很好,但总和不起作用。我想我得给这些加个条件,但不知道怎么加?
真的希望有人能帮我,提前谢谢:-)