A forma do objeto que você
emit do seu map A função deve ser igual ao objeto retornado do seu reduce função, como os resultados de um reduce pode ser realimentado em reduce ao processar um grande número de documentos (como neste caso). Então você precisa alterar seu
emit para emitir documentos como este:{userid:<xyz>, {events:[{adduser: 1}], allEventCount:1}}
{userid:<xyz>, {events:[{login: 1}], allEventCount:1}}
e, em seguida, atualize seu
reduce funcionar em conformidade.