【发布时间】:2015-11-09 13:55:48
【问题描述】:
我将游戏结果保存在 MongoDB 中,并想计算每个玩家的 3 个最佳结果的总和。
通过聚合框架,我能够从我的已完成游戏数据库中构建以下中间管道结果(下面的每个玩家都完成了 5 场比赛并获得了分数):
{
"_id" : "Player1",
"points" : [ 324, 300, 287, 287, 227]
},
{
"_id" : "Player2",
"points" : [ 324, 324, 300, 287, 123]
}
现在我需要总结每个玩家的三个最佳值。我能够对数组进行排序,因此在这里也可以只获取每个数组的前 3 个元素,以在下一个管道步骤中构建数组的总和。
$limit 如果我只需要一个玩家的结果,就可以正常工作。我也尝试过使用 $slice,但这似乎在聚合框架中不起作用。
那么我如何获得每个玩家的三个最佳结果的总和?
【问题讨论】:
-
不幸的是,聚合框架中没有数组索引或
$slice运算符(如MongoDB 2.2.2)。您可以投票并观看现有的功能请求:SERVER-4589。作为一种解决方法,您要么必须在应用程序代码中实现最终总和,要么使用 Map/Reduce。 -
好的,非常感谢。
标签: mongodb