У меня есть CouchDB со следующим документом:
{
"name":"Chris",
"tags":["mustache", "music", "couchdb"]
}
{
"name":"Noah",
"tags":["hypertext", "philosophy", "couchdb"]
}
{
"name":"Jan",
"tags":["drums", "bike", "couchdb"]
}
Функция карты:
function(dude) {
if(dude.name && dude.tags) {
dude.tags.forEach(function(tag) {
emit(tag, 1);
});
}
}
Функция уменьшения:
function(keys, values) {
return sum(values);
}
Теперь, если я запрашиваюс помощью параметра ?group=true
я получаю счетчик для каждого тега:
{"rows":[
{"key":"bike","value":1},
{"key":"couchdb","value":3},
{"key":"drums","value":1},
{"key":"hypertext","value":1},
{"key":"music","value":1},
{"key":"mustache","value":1},
{"key":"philosophy","value":1}
]}
Какой запрос мне следует использовать, чтобы получить значение только "couchdb" в одиночку?
Этот пример был взят из книги CouchDB, в то время как мое живое приложение имеет тысячи ключей, и большую часть времени мне просто нужно найти количество отдельных ключей.
Я не могу использовать key = параметр, который действительно является тем, что я хочу, так как он возвращает пустой результат.
Если я запрашиваю ?group=true&startkey="couchdb"&endkey="drums"
, я получу счетчик только couchdb ,но я не могу использовать startkey = и endkey = , потому что я не знаю, каким будет следующий ключ в работающей БД.
Какие решения вы бы порекомендовали в этомситуация?