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

oha*_*nho 4 mapreduce nosql couchbase

我是整个map-reduce概念的新手,我正在尝试执行一个简单的map-reduce功能.

我目前正在使用Couchbase服务器作为我的NoSQL数据库.

我想获得所有类型的列表:

key: 1, value: null
key: 2, value: null
key: 3, value: null
Run Code Online (Sandbox Code Playgroud)

这是我的文件:

{
   "type": "1",
   "value": "1"
}

{
   "type": "2",
   "value": "2"
}

{
   "type": "3",
   "value": "3"
}

{
   "type": "1",
   "value": "4"
}
Run Code Online (Sandbox Code Playgroud)

我一直想做的是:写一个地图功能:

function (doc, meta) {
  emit(doc.type, 0);
}
Run Code Online (Sandbox Code Playgroud)

使用内置的reduce功能:

_count
Run Code Online (Sandbox Code Playgroud)

但我没有得到预期的结果.

我怎样才能获得所有类型?

UPDATE

请注意,类型是不同的文档,我知道reduce对文档起作用,不在文档之外执行.

avs*_*sej 8

默认情况下,它将减少所有密钥组.您想要的功能称为group_level:

这相当于 reduce=true

~ $ curl 'http://localhost:8092/so/_design/dev_test/_view/test?group_level=0'
{"rows":[
{"key":null,"value":4}
]
}
Run Code Online (Sandbox Code Playgroud)

但是这里是你如何通过密钥的第一级来减少

~ $ 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}
]
}
Run Code Online (Sandbox Code Playgroud)

还有关于此的博客文章:http://blog.couchbase.com/understanding-grouplevel-view-queries-compound-keys

couchbase管理控制台中有适当的选项: couchbase管理控制台中的group_level选项