我是整个map-reduce概念的新手,我正在尝试执行一个简单的map-reduce函数。
我目前正在使用Couchbase服务器作为我的NoSQL数据库。
我想获得所有类型的列表:
key: 1, value: null
key: 2, value: null
key: 3, value: null
以下是我的文件:
{
"type": "1",
"value": "1"
}
{
"type": "2",
"value": "2"
}
{
"type": "3",
"value": "3"
}
{
"type": "1",
"value": "4"
}
我一直想做的是: 写一个地图功能:
function (doc, meta) {
emit(doc.type, 0);
}
使用内置缩减功能:
_count
但我没有得到预期的结果。
我如何获得所有类型?
更新
请注意,这些类型是不同的文档,我知道reduce对文档起作用,不会在文档之外执行。
答案 0 :(得分:8)
默认情况下,它会减少所有密钥组。您想要的功能称为group_level
:
这相当于reduce=true
~ $ curl 'http://localhost:8092/so/_design/dev_test/_view/test?group_level=0'
{"rows":[
{"key":null,"value":4}
]
}
但是这里是如何通过键的第一级来减少
~ $ curl 'http://localhost:8092/so/_design/dev_test/_view/test?group_level=1'
{"rows":[
{"key":"1","value":2},
{"key":"2","value":1},
{"key":"3","value":1}
]
}
还有关于此的博文:http://blog.couchbase.com/understanding-grouplevel-view-queries-compound-keys
couchbase管理控制台中有适当的选项: