根据以前的值减少和计算文档

时间:2013-04-17 12:48:58

标签: javascript mapreduce couchdb

假设我有以下格式的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?我不想要jumpsruns的总数。甚至可以从previousnext函数中的当前文档访问mapreduce个文档?

谢谢!

1 个答案:

答案 0 :(得分:2)

不,你不能像地图那样访问地图中的其他文件。对于初学者,我不认为减少顺序是明确定义的,所以'先前'和'下一个'甚至不是真正有意义的我害怕。

相反,我建议你将每个玩家动作的整个历史记录折叠成一个单独的文档,如:

{
  "player": "abcde",
  "actions" : [ "right", "run", "jump" ]
}

然后,您可以仅在map方法中从数组中计算特定的有序操作集,并在reduce中根据需要将它们简单地聚合。