Как получить "fieldcount" (например, wordcount) на CouchDB/Cloudant?
Попытка получить количество полей, как в классическом примере подсчета слов. Я думал, что это будет тривиально...
но я получил этот бесполезный результат...
{"rows":[
{"key":null,"value":212785214}
]}
Как я могу получить то, что хотел... инвентаризацию всех полей, используемых в моих документах, с подсчетом того, сколько раз они встречаются?
1 ответ
Решение
Чтобы получить счетчик каждого ключа в вашем документе, создайте функцию "карта", например:
function (doc) {
var keys = Object.keys(doc);
for(var i in keys) {
emit(keys[i], null);
}
}
и использовать встроенный _count
редуктор.
Затем вы можете получить сгруппированный ответ, открыв представление следующим образом:
/mydb/_design/<designdocname>/_view/<viewname>?group_level=1
который выдаст сгруппированные ключи и подсчитает примерно так:
{"rows":[
{"key":"_id","value":4},
{"key":"_rev","value":4},
{"key":"a","value":3},
{"key":"c","value":1}
]}