CouchDB 为行键返回 None(减少函数)
CouchDB Returning None for Row Key (reduce function)
我有一个 map 函数和 reduce 函数来计算一个键的所有出现次数。 CouchDB 2.0设计文档代码如下:
映射函数
function(doc) { emit(doc.domainID, 1); }
约简函数
_sum
这是浏览器显示内容的快照:
这是我在 Python 中 运行 以下代码时的结果:
import couchdb
couch = couchdb.Server("http://localhost:5984/")
counts = couch['event_db'].view('doc/eventbydomainid',
reduce=True, descending=True)
打印键和值时的终端结果
我期待以下结果,但没有看到:
{"ad1": 32, "ad2": 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
)
我有一个 map 函数和 reduce 函数来计算一个键的所有出现次数。 CouchDB 2.0设计文档代码如下:
映射函数
function(doc) { emit(doc.domainID, 1); }
约简函数
_sum
这是浏览器显示内容的快照:
这是我在 Python 中 运行 以下代码时的结果:
import couchdb
couch = couchdb.Server("http://localhost:5984/")
counts = couch['event_db'].view('doc/eventbydomainid',
reduce=True, descending=True)
打印键和值时的终端结果
我期待以下结果,但没有看到:
{"ad1": 32, "ad2": 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
)