9

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

使用 SQL 我会做类似的事情

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

在 CouchDB 中通过任_id一字段或其他字段执行此操作的秘诀是什么?

4

2 回答 2

7

您需要使用 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字段指向保存的文档,2键和4包含引用文档内容的键。56doc

于 2012-10-06T20:21:24.430 回答
3

在 CouchDB Bulk 文档中,API 用于此目的:

curl -d '{"keys":["2","4", "56"]}' -X POST http://127.0.0.1:5984/foo/_all_docs?include_docs=true

http://wiki.apache.org/couchdb/HTTP_Bulk_Document_API

于 2012-10-07T08:37:31.587 回答