假设我有以下格式的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文档?

谢谢!

最佳答案

不,您不能像这样访问地图/缩小中的其他文档。对于初学者,我认为降序没有明确定义,因此恐怕“上一个”和“下一个”甚至都没有真正的意义。

相反,我建议您将每个玩家动作的全部历史记录合并到一个文档中,例如:

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


然后,您可以仅在map方法中从数组中计数特定的一组有序操作,并在reduce中根据需要轻松汇总它们。

10-08 04:22