我有一个CouchDB数据库,其中每个文档代表某个特定时间由特定玩家在游戏中得分的一个点。我需要在任意日期范围内有效地生成玩家的排行榜及其总分,按分数排序。通过日期 - 玩家视图来总计得分总是很容易,但我不能对分数进行排序,因为它是降价值的一部分,而不是关键。
有没有办法在单个视图中执行此操作?如果没有,有什么办法可以做到吗?
我想过可能会使用按日期得分的玩家视图生成中间文档,并使用第二个视图按分数排序。但是AFAIK,CouchDB没有任何方便的方法来从视图生成文档,或者从其他视图中获取视图。而这只适用于固定的日期范围,而不适用于任意日期范围。
答案 0 :(得分:2)
“Chained MapReduce”在Apache CouchDB 1.x中没有出现。它已经是functional in Cloudant's fork和scheduled for integration in Apache CouchDB 2.x。
implement it by hand有一些方法。但是,如果您只是需要对排行榜进行排序,那将是一种过度杀伤。
使用MapReduce按日期和用户分组进行选择。并让客户按分数排序。