我需要通过一堆 id 来获取 couchdb 文档。是否有请求/API 来执行此操作?我不想创建一个视图(id,docs),然后通过键进行查找。当 id b-tree 已经存在时
3 回答
您应该使用此处记录的批量 API 。
它可能看起来像下面这样。
- 通过 POST 将密钥作为正文的一部分传递
- 传入数据库的名称(在下面的示例中,它是
demodb
) - 在 url 中,使用
_all_docs
视图 - 如果您希望返回整个文档(而不仅仅是
rev
),请务必通过include_docs=true
curl -d '{"keys":["docId1","docId2","docId3"]}' -X POST http://127.0.0.1:5984/demodb/_all_docs?include_docs=true
如果您想获取一系列文档,您还可以像在视图中一样使用startkey_docid
和参数。limit
您所做的是对 URL 的 GET 请求,例如
http://127.0.0.1:5984/demodb/_all_docs?startkey_docid="docId1"&limit=5
获得一组结果后,您可以使用最后返回的结果作为下一个 startkey 并再次运行请求。这具有跳过视图索引过程的好处(这对于大型数据库来说可能是一件痛苦的事情)。
记录在 CouchDB API 中,这里。
如果您正在使用该python-couchdb
库,则可以使用:
_, _, response = <your_db>.resource.post_json('_bulk_get', {'docs': [{'id': '<1st_doc_id>'}, {'id': '<2nd_doc_id>'}]})
您的结果将在response['results']
.