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