我有很多文档看起来像这样:
{userId: 123, msg:{ timestamp:123456, event:"actionA"} }
{userId: 123, msg:{ timestamp:123466, event:"actionB"} }
etc...
地图fn:
emit(doc.userId, [doc.msg])
减少fn:
return [].concat.apply([], vs)
这些函数看起来像我期望的那样,所以我想我会看到如下的输出:
Key: 123, Value: [{timestamp:123456, event:"actionA"}, {timestamp:123466, event:"actionB"}, ...etc...]
但是,我得到一个减少溢出错误,"减少输出必须更快地缩小".实际上,couchdb文档说"根据经验,reduce函数应该减少到单个标量值." ......"如果你尝试使用"错误方式",CouchDB会给你一个警告"".
所以,我想我正在使用Couch MR"错误的方式".进行这种计算的"正确方法"是什么?
我以前也打过这个.CouchDB喜欢高级列表,而不是胖列表.换句话说,您可以在视图中使用键获得所需的内容,而不是将它们缩减为相同的内容.
如果要查看来自userId的所有消息,则不需要reduce函数.只需查询您的视图即可?key=123.您将看到该userId的所有消息,并且大小没有限制.
如果您对格式不满意(如果您只是必须更改沙发发送给您的JSON),那么Simon的列表功能链接是正确的.
| 归档时间: |
|
| 查看次数: |
2671 次 |
| 最近记录: |