我正在将游戏结果保存在MongoDB中,并希望计算每个玩家的最佳3个结果的总和。
使用聚合框架,我能够从完成的游戏数据库中构建以下中间管道结果(下面每个玩家都已完成5个具有给定分数的游戏):
{
"_id" : "Player1",
"points" : [ 324, 300, 287, 287, 227]
},
{
"_id" : "Player2",
"points" : [ 324, 324, 300, 287, 123]
}
现在我需要总结每个玩家的三个最佳值。我已经成功地对数组进行了排序,因此在下一个管道步骤中只需获取每个数组的前3个元素即可构建数组的总和。如果我只需要一个玩家的结果,则$limit可以很好地工作。我还尝试使用$slice,但似乎在聚合框架中无法使用。那么我该如何获得每个玩家的三个最佳结果的总和呢?
$slice
运算符。您可以投票并关注现有的功能请求:SERVER-4589。作为解决方法,您将不得不在应用程序代码中实现最终总和,或使用Map/Reduce。 - Stennie