2012-04-04 45 views
6

我知道,通过REST API,可以指定“限制”参数(例如?极限= 5),以限制结果的数量从一个给定的视图返回在CouchDB中。使用“限制”在CouchDB中查看地图功能参数

我的问题是是否有一种方法可以在视图内部的map函数中执行此操作......?

+3

你能提供更多的信息吗?您想做什么? – 2012-04-04 19:22:16

回答

5

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

地图功能被应用于每一个文档中的数据库和减少功能,如果定义的话,被施加到每一个减少的结果。认为预先计算。

您在URL中提供的查询参数应用到B +树,你的MapReduce功能建设。例如,如果您说?limit=5,那么树中最左边的五个叶子将用作结果。或者如果你说?limit=5&descending=true那么树中最右边的五个叶子就被用作结果。

但是,你正在试图通过在地图的功能做了?limit=5完成什么可能会以不同的方式来实现。例如,您的应用程序可能会在文档中包含某些内容,使其有条件地包含在结果中。或者强制只有五个文件被标记在索引中,尽管这很麻烦,并且根据数据库的大小而定,成本很高。

干杯。

0

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

0

它不可能为map功能。因为地图将分别处理每个文档,并可能同时在任何单独的节点上进行处理。它根本不知道其他文件

但我认为你想要的可能与reduce。减少会在地图功能做完所有事情之后运行并具有所有结果。所以,你可以从map以任何方式

简而言之修改的结果,你可以使用reduce对行分组使用相同的密钥,那么你可以调整每个组(如果我没记错的话在rereduce)到只有5个结果