假设我有以下格式的CouchDB文档:
...
{
player: 'abcde',
action: 'run'
},
{
player: 'abcde',
action: 'jump'
},
{
player: 'abcde',
action: 'left'
},
{
player: 'abcde',
action: 'right'
},
....
我的view
看起来像这样:
function(doc) {
emit(doc.player, doc.action)
}
如何计算玩家abcde
有多少次jump
紧随其后行动run
?我不想要jumps
和runs
的总数。甚至可以从previous
或next
函数中的当前文档访问map
或reduce
个文档?
谢谢!
答案 0 :(得分:2)
不,你不能像地图那样访问地图中的其他文件。对于初学者,我不认为减少顺序是明确定义的,所以'先前'和'下一个'甚至不是真正有意义的我害怕。
相反,我建议你将每个玩家动作的整个历史记录折叠成一个单独的文档,如:
{
"player": "abcde",
"actions" : [ "right", "run", "jump" ]
}
然后,您可以仅在map方法中从数组中计算特定的有序操作集,并在reduce中根据需要将它们简单地聚合。