CouchDB, возвращающий None для клавиши строки (функция уменьшения)
У меня есть функция карты и функция уменьшения, чтобы подсчитать все вхождения ключа. Код ниже для проектного документа CouchDB 2.0:
Функция карты
function(doc) { emit(doc.domainID, 1); }
Уменьшить функцию
_sum
Вот снимок того, что показывает браузер:
И вот результат, когда я запускаю следующий код в Python:
import couchdb
couch = couchdb.Server("http://localhost:5984/")
counts = couch['event_db'].view('doc/eventbydomainid',
reduce=True, descending=True)
Терминальный результат при печати ключа и значения
Я ожидаю следующий результат, но не вижу его:
{"ad1": 32, "ad2": 1}
Любая помощь будет оценена.
Спасибо,
Брайан
1 ответ
Когда вы используете функцию сокращения, по умолчанию поведение сводит весь набор данных к одному значению. Если вы хотите группировать, добавьте group=true
по вашему запросу. ( документация)
И хотя вы не спрашивали об этом конкретно, вы, несомненно, столкнетесь с этим при работе с map/ lower в CouchDB. Если вы используете сложные ключи (например, массивы), вы можете использовать group_level
параметр для группировки по различным частям массива слева направо. ( пример)
Интересным примером использования здесь является выдача даты в виде массива, например: [2017, 8, 29, 22, 59, 16]
, С помощью group_level=1
сгруппировать по годам, group_level=2
сгруппировать по годам + месяцам и так далее. (профессиональный совет: используя group_level
установит group=true
неявно)