2016-09-16 34 views
0

我有几个CouchDB中的文档,每一个都具有CID字段,如 -降低输出必须收缩更为迅速,在添加新文档

{ 
    "_id": "ccf8a36e55913b7cf5b015d6c50009f7", 
    "_rev": "8-586130996ad60ccef54775c51599e73f", 
    "cId": 1, 
    "Status": true 
} 

我有一个简单的视图,它试图返回的最大地图CID和减少功能如下 -

地图

function(doc) { 
    emit(null, doc.cId); 
} 

减少

function(key, values, rereduce){ 

return Math.max.apply(null, values); 
} 

这工作得很好(输出是1),直到我添加一个更多的文件与cId = 2分贝。我期待输出为2,但它开始给出错误,因为“减少输出必须更快地缩小”。当我删除这个文件时,事情又会恢复正常。这里可能是什么问题?有没有其他方法可以实现这一目标?

注意:db中有更多的视图,它们执行不同的角色和很少的返回json。他们也开始失败这个变化。

+0

我会建议打开一个新的问题与地图的问题和减少Edit1的功能。它与原始问题完全不同,并且存在一些问题,例如你不应该在视图的map函数中发出整个文档。 – pwagner

+1

发表:http://stackoverflow.com/questions/39544175/reduce-output-must-shrink-more-rapidly-reducing-to-a-list-of-documents – Sam

回答

1

您可以简单地使用内置的_statsreduce function,以获得最大的价值。它在“最大”字段中返回。

+0

我有其他的观点,以及哪些返回json。他们抛出同样的错误。 – Sam

+0

你可以发布地图并减少功能吗? – pwagner

+0

地图/缩小功能非常复杂。实质上,它将基于少数条件输出文档的子集。说,有文件与cId = 1,2,3,4,5,6然后输出可以是文件与cId = 1,4,5,6 – Sam