Mapreduce CouchDB-带日期键的排行榜视图

Mapreduce CouchDB-带日期键的排行榜视图,mapreduce,couchdb,Mapreduce,Couchdb,我有一个CouchDB数据库,其中每个文档表示某个特定玩家在某个特定时间在游戏中所获得的一分。我需要有效地生成一个排行榜的球员和他们的总分,在任意日期范围内,按分数排序。按日期玩家视图生成总分很容易,但我无法对分数进行排序,因为它是缩减值的一部分,而不是关键 有没有一种方法可以在单个视图中执行此操作?如果没有,有什么办法吗 我考虑过使用score by date player视图来生成中间文档,并使用第二个视图来按分数排序这些文档。但是顺便说一句,CouchDB没有任何方便的方法从视图生成文档,

我有一个CouchDB数据库,其中每个文档表示某个特定玩家在某个特定时间在游戏中所获得的一分。我需要有效地生成一个排行榜的球员和他们的总分,在任意日期范围内,按分数排序。按日期玩家视图生成总分很容易,但我无法对分数进行排序,因为它是缩减值的一部分,而不是关键

有没有一种方法可以在单个视图中执行此操作?如果没有,有什么办法吗

我考虑过使用score by date player视图来生成中间文档,并使用第二个视图来按分数排序这些文档。但是顺便说一句,CouchDB没有任何方便的方法从视图生成文档,或者从其他类似的视图派生视图。无论如何,这只适用于固定的日期范围,而不适用于任意的日期范围。

Apache CouchDB 1.x中没有“Chained MapReduce”。现在已经是了

有一些方法可以解决这个问题。然而,如果你只需要对排行榜进行排序,那就太过分了


使用MapReduce按日期选择,按用户分组。让客户按分数排序。

我看到的玩家超过一百万。然后,正如我在回答中提到的,您有3个选项:1/使用Cloudant的fork,2/手动实现链接线程中描述的策略,3/等待Apache CouchDB 2.0(或者更可能是2.1)。谢谢,这打开了一些可能性。关于如何实现任意日期范围有什么想法吗?或者至少有一个固定大小的滑动窗口?即使使用链式视图,我也不知道该如何工作。请确保日期格式的字母顺序与日期顺序类似。如果是这样,您可以
发出(,)
并使用
\u sum
降低分数。然后,你可以用
startkey=[]&endkey=[,{}]&group=true来查询它。对,但我搞不懂的是如何在窗口内按球员的总得分排序。该窗口中将有10万名玩家,因此我需要以某种方式为他们编制索引。我试图想出比每次窗口边界改变时重建整个索引更好的方法。