1

假设我有以下格式的 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 后立即行动runjumps我不想要and的总数runs。甚至可以从一个或函数中的当前文件访问previous或文件?nextmapreduce

谢谢!

4

1 回答 1

2

不,您不能像这样访问 map/reduce 中的其他文档。对于初学者,我不认为reduce order是明确定义的,所以恐怕'previous'和'next'甚至没有真正意义。

相反,我建议您将每个玩家操作的整个历史记录折叠到一个文档中,例如:

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

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

于 2013-04-17T18:53:17.090 回答