我正在使用CouchDB 1.1.1作为我的网络应用程序 - 到目前为止一切都运行良好(保存/检索文档,保存/查询视图等)但我仍然在查询某个特定密钥的视图特定的群体水平。
我视图中的地图功能以下列格式输出键:[“Thing 1”“Thing 2”]。我有一个可以正常工作的reduce函数,并为组级别1(即“事物1”)和组级别2(即“事物2”)输出正确的值。
现在 - 当我查询couchdb时,我设置了reduce = true(默认值),group_level = 2(或者group = true,在这种情况下,由于我只有2个级别,因此我只能获取一个特定的键)和key =“desiredkeyhere”。我还可以使用keys = [“key1”“key2”]查询多个键。
但是 - 我真的希望能够为group_level = 1获取一个特定的密钥,而我无法让它工作。它似乎什么也没有返回,或者如果使用post请求,它会返回所有内容。永远不只是我需要的一把钥匙。
下面是我一直在使用的couchdb http视图api(查询选项)的链接: http://wiki.apache.org/couchdb/HTTP_view_API#Querying_Options
它包含以下句子: “注意:对reduce函数的多个键请求仅支持group = true和NO group_level(与group_level = exact相同)。产生的错误是”reduce视图的多键提取必须包括group = true“”
我不确定这是否意味着我不能做我上面描述的内容(获取特定group_level的特定键)。这对于couchdb来说似乎是个大问题,所以我假设我做错了什么。
有什么想法吗?感谢
答案 0 :(得分:2)
我也打过这个。不过,我不确定它是不是一个bug。
尝试以正常(2项)格式使用startkey
和endkey
。你想要["Thing 1", *]
的结果(显然是伪代码,星代表任何东西)。减少group_level=1
会将所有这些减少到一行。
因此,基本上可以查询Thing 1“命名空间”中的所有内容。由于要整理的“最小”值为null
而“最大”值为对象{}
,因此这些值会为您的范围提供良好的书挡。
?group_level=1&startkey=["Thing 1",null]&endkey=["Thing 1",{}]
这能为您提供所需的结果吗?