карта couchdb-уменьшить и группировать - PullRequest
3 голосов
/ 30 августа 2011

Я пытаюсь получить количество уникальных событий для объекта (скажем, видео):

Вот мои документы:

{
  "type":"View",
  "video_id": "12300",
  "user_id": 3
}

{
  "type":"View",
  "video_id": "12300",
  "user_id": 1
}
{
  "type":"View",
  "video_id": "45600",
  "user_id": 3
}

Я пытаюсь получитьуникальное (на user_id) количество просмотров для каждого видео

Я предполагаю, что хочу отобразить свои данные следующим образом:

function(doc) {
        if (doc.type === 'View') {
           emit([doc.video_id, doc.user_id], 1);
        }
    },

Но я не понимаю, как их уменьшитьуникальным пользователям за видео, или я ошибаюсь.

Ответы [ 2 ]

6 голосов
/ 31 августа 2011

Вы должны посмотреть на group_level параметр просмотра. Это позволит вам изменить поле, в котором происходит группировка.

Используя group_level = 1, в этом случае он будет группироваться по video_id. Используя group_level = 2, он будет группироваться по video_id и user_id.

4 голосов
/ 30 августа 2011

Добавить? Group = true после запроса URL. Это группирует идентичные клавиши вместе как ввод для функции уменьшения:

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

Это должно сделать это.

Обратите внимание, что ключи и значения - это разархивированные списки ключей и их значений. При группировке по клавишам все идентичные для каждого вызова уменьшаются.

...