Как получить "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}
]}
Другие вопросы по тегам