我知道通过REST API,可以指定'limit'参数(例如?limit = 5),以限制从CouchDB中给定视图返回的结果数。
我的问题是在视图中的地图功能本身内是否有办法做到这一点......?
答案 0 :(得分:5)
您的具体问题的答案是“不”。
map函数应用于数据库中的每个文档,reduce函数(如果已定义)将应用于每个reduce结果。想想预先计算。
您在URL中提供的查询参数将应用于MapReduce函数构建的B + Tree。例如,如果您说?limit=5
,那么树中最左边的五个叶子将用作结果。或者,如果您说?limit=5&descending=true
,那么树中最右边的五个叶子将用作结果。
但是,您在Map函数中执行?limit=5
尝试完成的操作可能会以不同的方式完成。例如,您的应用程序可以在文档中包含一些内容,使其有条件地包含在结果中。或者强制执行只有五个文档被标记为在索引中,尽管这很麻烦,并且根据您的数据库的大小,成本很高。
干杯。
答案 1 :(得分:0)
如果您的UUID是顺序的(您可以检查您的配置),您可以利用它本身来查看前五个文档。
答案 2 :(得分:0)
map
功能不可能。因为map将分别处理每个文档,并且可能同时在任何单独的节点上处理。它根本无法了解其他文件
但我认为你想要的是reduce
。在map函数执行所有操作并且所有结果都存在之后,将执行reduce。因此,您可以以任何方式修改map
的结果
简单地说,你可以使用reduce
对具有相同键的行进行分组,然后你可以修剪每个组只有5个结果(如果我没记错的话,在rereduce
中)