对于行键,CouchDB返回无(减少功能)

时间:2017-08-30 00:05:37

标签: python mapreduce couchdb map-function couchdb-python

我有一个map函数和reduce函数来计算一个键的所有出现次数。 CouchDB 2.0设计文档的代码如下:

地图功能

function(doc) { emit(doc.domainID, 1); }

减少功能

_sum

以下是浏览器显示内容的快照:

Map and reduce functions result

以下是我在Python中运行以下代码时的结果:

import couchdb
couch = couchdb.Server("http://localhost:5984/")    
counts = couch['event_db'].view('doc/eventbydomainid',
                                 reduce=True, descending=True)

打印键和值时的终端结果

Terminal result showing no key

我期待以下结果,但没有看到:

{"ad1": 32, "ad2": 1}

任何帮助都将不胜感激。

谢谢,

布赖恩

1 个答案:

答案 0 :(得分:1)

使用reduce函数时,默认行为是将整个数据集减少为单个值。如果您想分组,请在您的请求中添加group=true。 (documentation

虽然你没有具体询问这个问题,但在使用CouchDB中的map / reduce时,你无疑会碰到它。如果要发出复杂的键(例如:数组),则可以使用group_level参数从左到右按阵列的各个部分进行分组。 (example

这里有一个有趣的用例是将日期作为数组发出,例如:[2017, 8, 29, 22, 59, 16]。使用group_level=1将按年分组,group_level=2将按年/月分组,依此类推。 (专业提示:使用group_level会隐式设置group=true