Изучение карты в Фокстоне
Я новичок в noSQL, couchDB и mapreduce и мне нужна помощь.
У меня есть тот же вопрос, который обсуждается здесь { Как использовать редукцию в Фокстоне}, но я не понимаю ответа:(.
У меня есть рабочая функция карты:
function (foo) {
if(foo.type == "blog post");
emit(foo)
}
который возвращает 11 отдельных документов. Я хочу изменить это, чтобы вернуть foo.type вместе со счетчиком 1. Я попытался:
function (doc) {
if(doc.type == "blog post");
return count(doc)
}
и "_count" из панели "Уменьшить", но, очевидно, я делаю что-то неправильно, так как представление ничего не возвращает.
Заранее спасибо за любую помощь или руководство!
2 ответа
карта
Поэтому, когда вы создаете функцию карты, вы буквально создаете словарь или карту, которые являются ключевыми: значения структур данных.
Ваша функция карты должна выдавать ключи, которые вы будете запрашивать. Вы также можете передать значение, но если вы намереваетесь просто получить связанный документ, вам не нужно выдавать какие-либо значения. Зачем? Потому что есть параметр запроса, который можно использовать для возврата связанного документа (?include_docs=true
).
уменьшить
Затем вы можете использовать функцию Reduce, которая будет вызываться для каждого результата с одинаковыми клавишами. Каждый результат с одним и тем же ключом будет обработан через вашу функцию уменьшения для уменьшения значения.
Исправленный пример
Так что в вашем случае вы хотите отобразить документ по типу, я полагаю.
Вы можете создать функцию, которая генерирует документы, которые имеют type
имущество.
function(doc){
if(doc.type)
emit(doc.type);
}
Если вы запросите это представление, вы увидите, что ключи каждой строки будут типом документа. Если вы выбираете _count
уменьшить функцию, у вас должно быть количество документов для каждого типа.
При запросе представления вы должны указать: group=true&reduce=true
Также вы можете получить все документы типа blog post
запросив эти параметры: ?key="blog post"
В Fauxton шаг "Уменьшить" довольно неудобен и неинтуитивен.
- Выберите _count во всплывающем окне "Уменьшить (необязательно)" ниже, где вы вводите карту.
- Выберите "Сохранить документ, а затем создать индекс". Это покажет результаты вашей карты.
- Найдите кнопку "Опции" вверху рядом со значком шестерни. Если вместо этого вы видите зеленую полосу, закройте зеленую полосу крестиком.
- Выберите "Опции", затем отметьте "Уменьшить". Выберите Run Query.