Я делаю уменьшенное представление для подсчета заметок пользователей по диапазону дат, и я стою перед совершенно нерешаемой проблемой. Выбор диапазона дат в порядке - я создаю ключ массива [ГГГГ, ММ, ДД, идентификатор_пользователя].
Пример документа:
{
"_id": "1",
"_rev": "1-84d3fa5f259c7b30c74028ca60a45f91",
"body": "note text",
"user_id": 666,
"created_at": "Thu Apr 26 13:50:20 +0200 2010",
}
Функция карты:
function(doc){
var created = new Date(doc.created_at);
emit([created.getFullYear(),created.getMonth()+1,created.getDate(),doc.user_id],doc);
}
Функция уменьшения:
_count
До этого все в порядке - когда я хочу выбрать все заметки для выбранного диапазона дат, например, с 2010-02-02 по 2010-03-03:
reduce_view_name?startkey=[2010,02,01]&endkey=[2010,02,28,{}]&group_level=0
Легко выбрать суммы заметок / пользователя / дня - я изменяю group_level на 4.
Но как насчет количества заметок для выбранного диапазона дат с одной суммой заметок на пользователя? В этом случае я получаю 28 строк на пользователя, но что делать, если у вас 300 пользователей? Это будет 300x28 = 7400 строк (если каждый будет писать каждый день :).
2-й вариант - заменить user_id с последнего места на 1-й, но в этом случае мне нужно знать id_user и сделать выбор для каждого отдельно.
Кто-нибудь знает, как ее решить?:)