使用CouchDB复合键,查找多条记录

时间:2011-05-28 22:18:11

标签: database search nosql couchdb composite-key

我知道你可以传递一个键或一个范围来返回CouchDB中的记录,但我想做这样的事情。找到X值的X记录。

例如,在常规SQL中,假设我想返回包含 5,7,29,102 的ID的记录。我会做这样的事情:

SELECT * FROM sometable WHERE id = 5 OR id = 7 or id = 29 or id = 102

是否可以在CouchDB中执行此操作,我在键盘数组中输入要查找的所有值,然后CouchDB搜索“key parameter”中可能存在的所有记录

2 个答案:

答案 0 :(得分:4)

您可以执行POST as documented on CouchDB wiki。您传递了请求正文中的密钥列表。

{"keys": ["key1", "key2", ...]}

缺点是浏览器没有缓存POST请求。

或者,您可以使用带有keys参数的GET获得相同的响应。例如,您可以使用以下内容查询视图_all_docs

/DB/_all_docs?keys=["ID1","ID2"]&include_docs=true

,正确的URL编码,变为:

/DB/_all_docs?keys=%5B%22ID1%22,%22ID2%22%5D&include_docs=true

这应该提供更好的可缓存性,但请记住,每次更新文档时_all_docs都会发生更改。有时,您可以通过仅使用所需文档定义自己的视图来解决此问题。

答案 1 :(得分:2)

使用直视功能,这是不可能的。但是,您可以使用_list函数来完成相同的结果。