我有一个CouchDB数据库,其中每个文档代表特定玩家在某个特定时间在游戏中得分的一个点。我需要在任意日期范围内有效地生成玩家及其总分的排行榜,并按分数排序。按日期玩家视图制作总分很容易,但我无法对分数进行排序,因为它是减少值的一部分,而不是键。
有没有办法在单个视图中执行此操作?如果没有,有什么办法可以做到吗?
我想也许使用按日期得分玩家视图来生成中间文档,并使用第二个视图按分数对文档进行排序。但是AFAIK,CouchDB没有任何方便的方法可以从视图生成文档,或者从其他类似的视图派生视图。无论如何,这仅适用于固定日期范围,不适用于任意日期范围。
Chained MapReduce"在Apache CouchDB 1.x中没有特色。它已经在Cloudant的分支中运行,并计划集成到Apache CouchDB 2.x中。
有一些方法可以手动实现它。但是,如果您只需要对排行榜进行排序,那将是矫枉过正。
使用MapReduce按日期选择并按用户分组。并让客户按分数排序。