Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CouchDB映射/还原为数组_Couchdb_Mapreduce - Fatal编程技术网

CouchDB映射/还原为数组

CouchDB映射/还原为数组,couchdb,mapreduce,Couchdb,Mapreduce,我有许多文件如下所示: {userId:123,msg:{时间戳:123456,事件:“actionA”} {userId:123,msg:{时间戳:123466,事件:“actionB”} 等.. 地图fn: emit(doc.userId,[doc.msg]) 减少fn: return[].concat.apply([],vs) 这些函数似乎达到了我的预期效果,因此我认为我会看到如下输出: 键:123,值:[{时间戳:123456,事件:“actionA”},{时间戳:123466,事件:“

我有许多文件如下所示:

{userId:123,msg:{时间戳:123456,事件:“actionA”}

{userId:123,msg:{时间戳:123466,事件:“actionB”}

等..

地图fn:

emit(doc.userId,[doc.msg])

减少fn:

return[].concat.apply([],vs)

这些函数似乎达到了我的预期效果,因此我认为我会看到如下输出:

键:123,值:[{时间戳:123456,事件:“actionA”},{时间戳:123466,事件:“actionB”},…等等]

但是,我得到了一个reduce溢出错误,“reduce输出必须更快地收缩”。事实上,他们说“根据经验,reduce函数应该减少到单个标量值。”。。。如果您尝试使用reduce“错误的方式”,CouchDB将向您发出警告


所以,我想我用沙发先生是“错误的方式”。做这种计算的“正确方法”是什么?

我认为正确的方法是使用一个。如果需要的话,可以让列表函数输出JSON。

我以前也遇到过这个问题。CouchDB喜欢高名单,而不是胖名单。换言之,在视图中使用关键点可能可以获得所需的内容,而不必将它们缩减为相同的内容

如果希望查看来自用户标识的所有消息,则不需要reduce函数。只需使用
?key=123
查询视图即可。您将看到该用户ID的所有消息,并且大小没有限制

如果您对格式不满意(如果您只是必须更改coach发送给您的JSON),那么Simon的list函数链接是正确的