对单个键执行CouchDB reduce查询

对单个键执行CouchDB reduce查询,couchdb,Couchdb,我有一个CouchDB和以下文档: { “姓名”:“克里斯”, “标签”:[“胡须”、“音乐”、“couchdb”] } { “名字”:“诺亚”, “标签”:[“超文本”、“哲学”、“couchdb”] } { “姓名”:“Jan”, “标签”:[“鼓”、“自行车”、“couchdb”] } 地图功能: 函数(dude){ if(dude.name&&dude.tags){ dude.tags.forEach(函数(标记){ 发射(标签1); }); } } 减少功能: 功能(键、值){ 返

我有一个CouchDB和以下文档:

{
“姓名”:“克里斯”,
“标签”:[“胡须”、“音乐”、“couchdb”]
}
{
“名字”:“诺亚”,
“标签”:[“超文本”、“哲学”、“couchdb”]
}
{
“姓名”:“Jan”,
“标签”:[“鼓”、“自行车”、“couchdb”]
}
地图功能:

函数(dude){
if(dude.name&&dude.tags){
dude.tags.forEach(函数(标记){
发射(标签1);
});
}
}
减少功能:

功能(键、值){
返回和(值);
}
现在,如果我使用
?group=true
参数查询视图,我将返回每个标记的计数:

{“行”:[
{“key”:“bike”,“value”:1},
{“key”:“couchdb”,“value”:3},
{“键”:“鼓”,“值”:1},
{“键”:“超文本”,“值”:1},
{“键”:“音乐”,“值”:1},
{“键”:“胡须”,“值”:1},
{“关键”:“哲学”,“价值”:1}
]}
我应该使用什么查询来单独获取“couchdb”的值

这个例子取自CouchDB的书,而我的实时应用程序有1000个键,大多数时候我只需要找到一个单独键的计数

我不能使用key=parameter,这正是我想要的,因为它返回一个空结果

如果我查询
?group=true&startkey=“couchdb”&endkey=“鼓”
我只得到couchdb的计数,但我不能使用startkey=和endkey=,因为我不知道实时数据库中的下一个键是什么

在这种情况下,您会推荐什么解决方案?

key=“couchdb”&group=true
应该可以

我们在产品中有几个视图和查询,它们的工作方式与此完全相同,我只是尝试了其中一个。如果得到的结果为空,则该键可能与发射的键不完全相同。仔细检查是否发出一个字符串作为键(posted map函数正确地执行了该操作),以及是否存在任何大小写差异(请使用
toLowerCase()
,以确保在示例中不需要这样做)

在其他情况下(任何以“couchdb”开头的标记),您可以使用结尾带有高字符的endkey(“couchdb\ufff0”),但这在这里没有帮助。

key=“couchdb”&group=true
应该可以

我们在产品中有几个视图和查询,它们的工作方式与此完全相同,我只是尝试了其中一个。如果得到的结果为空,则该键可能与发射的键不完全相同。仔细检查是否发出一个字符串作为键(posted map函数正确地执行了该操作),以及是否存在任何大小写差异(请使用
toLowerCase()
,以确保在示例中不需要这样做)


在其他情况下(任何以“couchdb”开头的标记),您可以使用结尾带有高字符的endkey(“couchdb\ufff0”),但这在这里没有帮助。

我同意简单的key和group查询应该可以工作。需要注意的一件事可能是正确地对您需要的任何双引号进行URL编码。谢谢您的回答,Bernhard。我需要在key中正确地转义一个空格。我同意简单的key和group查询应该可以正常工作。需要注意的一件事可能是正确地对您需要的任何双引号进行URL编码。谢谢您的回答,Bernhard。我需要在钥匙上的一个空格里逃生。