用map-reduce编写一个简单的组(Couchbase)

时间:2013-08-29 07:59:07

标签: mapreduce nosql couchbase

我是整个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对文档起作用,不会在文档之外执行。

1 个答案:

答案 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管理控制台中有适当的选项: group_level option in couchbase admin console