6

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

我的问题是是否有办法在视图内部的地图功能本身内执行此操作......?

4

3 回答 3

5

您的具体问题的答案是“不”。

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

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

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

干杯。

于 2012-04-05T02:57:52.950 回答
0

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

于 2012-04-07T22:20:42.990 回答
0

功能是不可能的map。因为 map 将分别处理每个文档,并且可能同时在任何单独的节点上处理。它根本无法了解其他文件

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

简而言之,您可以使用reduce相同的键对行进行分组,然后您可以将每个组修剪为只有 5 个结果(rereduce如果我没记错的话)

于 2016-07-28T04:22:20.170 回答