CouchDB View, эквивалент SUM & GROUP BY

У меня есть несколько документов CouchDB, представляющих временную метку со свойством userId и тегом (пользователь может иметь n временных меток и назначать каждому тег). Я хочу запросить CouchDB по определенному userId и получить отсортированный список тегов, которые использовал пользователь (отсортированные по вхождению).

Как будет выглядеть представление?

Если я хочу получить список всех тегов, отсортированных по вхождению (независимо от того, от какого пользователя), или если я предполагаю, что есть только документы с тем же userId, я бы сделал это примерно так:

Карта:

function(doc) {
  if(doc.tag) emit(doc.tag, 1); 
}

Уменьшить:

function(keys, values) {
  return sum(values);
}

Но как мне сгруппировать результат, чтобы я мог фильтровать запрос по определенному идентификатору пользователя?

6
задан black666 1 April 2011 в 09:59
поделиться