CouchDB для запросов с фиксированными категориями

У меня есть такие документы в CouchDB:

{
  "_id": "0cb35be3cc73d6859c303fa3200011d2",
  "_rev": "1-f6e356bbf6ab09290aae11132af50d66",
  "adresse": "Bohrgaß 10 /",
  "plz": 56814,
  "ort": "Faid /",
  "kw": 2.32,
  "traeger": "SOL"
  ...
}

Существуют предопределенные категории для определенных атрибутов, например. трагер: "СОЛ", "БИО", "БЫЛ"; кВт: №2, 2-5, 5-20, 20-100; пожалуйста: 56814, пожалуйста: 56815; ...

Я должен иметь возможность эффективно запрашивать общее количество документов для каждой категории, а также общее количество документов и самих документов при определенных условиях. Например.

  1. Сколько документов в категории kw ‹2 (и всех остальных категориях kw) при условии traeger = "SOL"
  2. Сколько документов в категории traeger="SOL" (и всех остальных категориях traeger) при условиях plz=56814 AND kw ‹ 2

Пользователь может выбрать, какие категории он хочет объединить. Категории фиксированы. Также будет больше атрибутов и категорий.

Как будут выглядеть функции map/reduce для этого?

Марсель


person Marcel Menz    schedule 14.07.2011    source источник


Ответы (1)


Поскольку вы собираетесь подсчитывать документы, ваша функция сокращения — это просто встроенный счетчик. Ваша функция карты должна выдавать соответствующие ключи, которые будут искать ваши пользователи. Наконец, при запросе представления необходимо выбрать соответствующий уровень группы.

Пример: Вы можете создать представление с составным ключом ["traeger", "kw"]. Если вы запросите это представление с group_level = 2, вы получите количество документов для каждой комбинации traeger и kw.

Если вас интересует только трегер "SOL", вы можете ограничить вывод параметрами start_key и end_key.

Если вы хотите узнать количество документов в каждой категории «traeger», независимо от их «kw», вы можете запросить это представление с group_level 1.

Для вашего второго примера вы можете создать представление с ключом ["plz", "kw", "traeger"] и запросить его, используя start_key и end_key, чтобы ограничить результаты plz=56814 AND kw ‹ 2 и установить group_level на 3 .

Параметры запроса представлений перечислены здесь:

http://wiki.apache.org/couchdb/HTTP_view_API#Querying_Options

person titanoboa    schedule 14.07.2011
comment
Большое спасибо. Не разобрался с параметром group_level. Дело в том, что у меня гораздо больше категорий (или атрибутов), чем показано выше, и я не могу знать, какие из них выбраны. Таким образом, мои взгляды станут огромными, например. ключи с 10 атрибутами. - person Marcel Menz; 14.07.2011