Преобразование / сокращение CouchDB в массив

У меня есть несколько документов, которые выглядят так:

{userId: 123, msg: {timestamp: 123456, event: "actionA"}}

{userId: 123, msg: {timestamp: 123466, event: "actionB"}}

и т. д.

Map fn:

​​emit (doc.userId, [doc.msg])

Reduce fn:

return [] .concat.apply ([], vs)

Эти функции, кажется, делают то, что я ожидал, поэтому я Думал, что увижу такой вывод:

Ключ: 123, Значение: [{timestamp: 123456, event: "actionA"}, {timestamp: 123466, event: "actionB"}, ... и т. д. .]

Но я получаю ошибку переполнения : «Сокращение вывода должно сокращаться быстрее». Действительно, в документах couchdb говорится, что «Как правило, функция сокращения должна сводиться к единственному скалярному значению. "..." CouchDB выдаст предупреждение, если вы пытаетесь использовать сокращение «не в ту сторону» ».

Итак, я полагаю, что использую Couch MR "неправильно". Каким будет «правильный способ» выполнить такие вычисления?

5
задан Matthew Gilliard 19 February 2012 в 15:33
поделиться