CouchDB查询使用:group_level和:key

时间:2012-05-29 19:13:13

标签: nosql couchdb

我正在使用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来说似乎是个大问题,所以我假设我做错了什么。

有什么想法吗?感谢

1 个答案:

答案 0 :(得分:2)

我也打过这个。不过,我不确定它是不是一个bug。

尝试以正常(2项)格式使用startkeyendkey。你想要["Thing 1", *]的结果(显然是伪代码,星代表任何东西)。减少group_level=1会将所有这些减少到一行。

因此,基本上可以查询Thing 1“命名空间”中的所有内容。由于要整理的“最小”值为null而“最大”值为对象{},因此这些值会为您的范围提供良好的书挡。

?group_level=1&startkey=["Thing 1",null]&endkey=["Thing 1",{}]

这能为您提供所需的结果吗?