一尘不染

在CouchDB中执行WHERE-IN查询

sql

我想通过调用CouchDB查询特定文档的列表。

使用SQL,我会做类似的事情

SELECT *
FROM database.table
WHERE database.table.id
IN (2,4,56);

在CouchDB中按_id一个字段或另一个字段执行此操作的诀窍是什么?


阅读 162

收藏
2021-03-10

共1个答案

一尘不染

您需要使用viewskeys查询参数来获取具有指定集中键的记录。

function(doc){
    emit(doc.table.id, null);
}

接着

GET /db/_design/ddoc_name/_view/by_table_id?keys=[2,4,56]

要同时检索文档内容,只需将include_docs=True查询参数添加到您的请求中。

UPD
:也许您可能有兴趣通过此参考ID(2,4,56)来检索文档。默认情况下,CouchDB视图使用它们所属的文档“映射”发出的密钥。要调整此行为,您可以使用链接文档技巧:

function(doc){
    emit(doc.table.id, {'_id': doc.table.id});
}

现在要求

GET /db/_design/ddoc_name/_view/by_table_id?keys=[2,4,56]&include_docs=True

将返回行id字段点记录保存2456键和doc一个包含引用文档内容。

2021-03-10