我想通过一次调用CouchDB来查询特定文档的列表.
使用sql我会做类似的事情
SELECT * FROM database.table WHERE database.table.id IN (2,4,56);
通过_id或其他字段在CouchDB中执行此操作的方法是什么?
解决方法
您需要使用视图键
query parameter来获取具有指定集合中的键的记录.
function(doc){ emit(doc.table.id,null); }
然后
GET /db/_design/ddoc_name/_view/by_table_id?keys=[2,56]
要同时检索文档内容,只需在您的请求中添加include_docs = True查询参数即可.
UPD:您可能有兴趣通过此参考ID检索文档(2,56).默认情况下,CouchDB使用它们所属的文档查看“映射”发出的密钥.要调整此行为,您可以使用linked documents技巧:
function(doc){ emit(doc.table.id,{'_id': doc.table.id}); }
现在请求
GET /db/_design/ddoc_name/_view/by_table_id?keys=[2,56]&include_docs=True
将返回带有id字段的行,该字段指向包含2,4和56个键的文档,以及包含引用文档内容的doc.