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