使用';限制';CouchDB视图映射函数中的参数

使用';限制';CouchDB视图映射函数中的参数,couchdb,mapreduce,Couchdb,Mapreduce,我知道,通过RESTAPI,可以指定“limit”参数(例如?limit=5),以限制CouchDB中给定视图返回的结果数量 我的问题是,是否有一种方法可以在视图中的映射函数本身中执行此操作…?对于您的特定问题,答案是“否” map函数应用于数据库中的每个文档,reduce函数(如果已定义)应用于每个reduce结果。想想预计算吧 URL中提供的查询参数将应用于MapReduce函数构建的B+树。例如,如果您说?limit=5,则树中最左边的五片叶子将用作结果。或者,如果您说?limit=5&d

我知道,通过RESTAPI,可以指定“limit”参数(例如?limit=5),以限制CouchDB中给定视图返回的结果数量


我的问题是,是否有一种方法可以在视图中的映射函数本身中执行此操作…?

对于您的特定问题,答案是“否”

map函数应用于数据库中的每个文档,reduce函数(如果已定义)应用于每个reduce结果。想想预计算吧

URL中提供的查询参数将应用于MapReduce函数构建的B+树。例如,如果您说
?limit=5
,则树中最左边的五片叶子将用作结果。或者,如果您说
?limit=5&descending=true
,则树中最右边的五个叶子将用作结果

但是,您试图通过在Map函数中执行
?limit=5
来完成的操作可能会以不同的方式完成。例如,您的应用程序可以在文档中包含某些内容,从而使它们有条件地包含在结果中。或者强制要求索引中只标记五个文档,尽管这会很麻烦,而且根据数据库的大小,成本也会很高


干杯。

如果您的UUID是连续的(您可以检查您的配置),您可能能够利用它本身来查看前五个文档。

不可能使用
映射功能。因为map将分别处理每个文档,并且可能在任何单独的节点上同时处理每个文档。它根本不可能知道其他文档

但是我想你想要的是
reduce
。reduce将在map函数完成所有操作并显示所有结果后运行。因此,您可以以任何方式修改
map
的结果


简单地说,您可以使用
reduce
对具有相同键的行进行分组,然后您可以将每个组修剪为只有5个结果(在
reduce
中,如果我没记错的话)

您能提供更多信息吗?你想做什么?