0

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

地图功能

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

减少功能

_sum

这是浏览器显示的快照:

Map 和 reduce 函数结果

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

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

打印键和值时的终端结果

终端结果显示没有键

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

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

任何帮助,将不胜感激。

谢谢,

布赖恩

4

1 回答 1

2

当您使用缩减函数时,默认行为是将整个数据集缩减为单个值。如果要分组,请添加group=true到您的请求中。(文档

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

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

于 2017-08-30T04:01:35.457 回答