我是整个 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"
}
我一直在努力做的是:
写一个 map 函数:
function (doc, meta) {
emit(doc.type, 0);
}
使用内置的reduce函数:
_count
但我没有得到预期的结果。
我怎样才能得到所有类型?
更新
请注意,这些类型是不同的文档,我知道 reduce 对文档起作用,并且不会在文档之外执行。
最佳答案
默认情况下,它将减少所有 key 组。您想要的功能称为 group_level
:
这相当于 reduce=true
~ $ curl 'http://localhost:8092/so/_design/dev_test/_view/test?group_level=0'
{"rows":[
{"key":null,"value":4}
]
}
但这里是你如何获得第一级 key 的减少
~ $ 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 管理控制台中有适当的选项:
关于mapreduce - 使用 map-reduce (Couchbase) 编写一个简单的组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18505279/