我将游戏结果保存在 MongoDB 中,并想计算每个玩家的 3 个最佳结果的总和。
使用聚合框架,我能够从我的已完成游戏数据库中构建以下中间管道结果(下面的每个玩家都完成了 5 场比赛并获得了分数):
{
"_id" : "Player1",
"points" : [ 324, 300, 287, 287, 227]
},
{
"_id" : "Player2",
"points" : [ 324, 324, 300, 287, 123]
}
现在我需要总结每个玩家的三个最佳值。我能够对数组进行排序,因此在这里也可以只获取每个数组的前 3 个元素,以在下一个管道步骤中构建数组的总和。
如果我只需要一个玩家的结果,$limit 就可以正常工作。我也尝试过使用 $slice ,但这似乎在聚合框架中不起作用。
那么如何获得每个玩家的三个最佳结果的总和呢?