在couchdb视图中使用带有复合键的reduce不会在GET时返回任何结果
我有一个具有以下映射功能的couchdb视图:在couchdb视图中使用带有复合键的reduce不会在GET时返回任何结果,couchdb,couchdb-futon,Couchdb,Couchdb Futon,我有一个具有以下映射功能的couchdb视图: function(doc) { if (doc.date_of_operation) { date_triple = doc.date_of_operation.split("/"); d = new Date(date_triple[2], date_triple[1]-1, date_triple[0], 0, 0, 0, 0) emit([d, doc.name], 1); } } function (key
function(doc) {
if (doc.date_of_operation) {
date_triple = doc.date_of_operation.split("/");
d = new Date(date_triple[2], date_triple[1]-1, date_triple[0], 0, 0, 0, 0)
emit([d, doc.name], 1);
}
}
function (key, values, rereduce) {
return sum(values);
}
当我对此发出GET请求时,我将获得整个视图的数据(2.8MB):
但是,当我添加reduce函数时:
function(doc) {
if (doc.date_of_operation) {
date_triple = doc.date_of_operation.split("/");
d = new Date(date_triple[2], date_triple[1]-1, date_triple[0], 0, 0, 0, 0)
emit([d, doc.name], 1);
}
}
function (key, values, rereduce) {
return sum(values);
}
使用curl时,我不再获得任何数据:
$ curl -X GET http://somehost:5984/ops-db/_design/ops-views/_view/counts
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 42 0 42 0 0 7069 0 --:--:-- --:--:-- --:--:-- 8400
结果如下所示:
{"rows":[
{"key":null,"value":27065}
]}
{
"_id": "_design/foo",
"_rev": "2-6145338c3e47cf0f311367a29787757c",
"language": "javascript",
"views": {
"test1": {
"map": "function(doc) {\n emit(null, 1);\n}",
"reduce": "_sum"
}
}
}
这个view&map&reduce函数是使用Futon界面添加的,当在那里选中reduce复选框时,我会为每个“date,name”对获取一行,并为该对累积值。通过GET查询时会发生什么变化?reduce应该如下所示
_sum
因此,一个简单的“视图”如下所示:
{"rows":[
{"key":null,"value":27065}
]}
{
"_id": "_design/foo",
"_rev": "2-6145338c3e47cf0f311367a29787757c",
"language": "javascript",
"views": {
"test1": {
"map": "function(doc) {\n emit(null, 1);\n}",
"reduce": "_sum"
}
}
}
通过curl调用视图时,可以尝试传递触发reduce和grouping所需的参数 e、 g 明确告诉CouchDB运行
reduce
函数
$curl-X GEThttp://somehost:5984/ops-db/_设计/ops视图/_视图/计数?reduce=true
或组
和组_级别
参数
您可以阅读有关可用选项的更多信息(在
查询选项部分下)谢谢,将group=true添加到查询参数解决了问题@如果这解决了你的问题,Prakash会善意地标记为答案。谢谢。使用_sum没有任何更改,必须将group=true添加到查询参数中。