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