nosql – CouchDB查询使用:group_level和:key

我正在使用CouchDB 1.1.1作为我的网络应用程序 – 到目前为止一切都很顺利(保存/检索文档,保存/查询视图等)但我仍然在查询某个特定组级别的特定键的视图.

我视图中的map函数以下列格式输出键:[“Thing 1”“Thing 2”].我有一个正常工作的reduce函数,并为组级别1(即“事物1”)和组级别2(即“事物2”)输出正确的值.

现在 – 当我查询couchdb时,我设置了reduce = true(默认值),group_level = 2(或者group = true,在这种情况下,因为我只有2个级别,因此我只有2个级别) “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的一个大问题,所以我假设我做错了什么.

有任何想法吗?谢谢

最佳答案 我也打过这个.不过,我不确定它是不是一个bug.

尝试以正常(2项)格式使用您的开始键和结束键.你想要[“Thing 1”,*]的结果(显然是伪代码,星代表任何东西).使用group_level = 1进行减少会将所有这些减少到一行.

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

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

这会给你带来你需要的结果吗?

点赞