如何在不创建视图的情况下通过couchdb中的id批量获取

问题描述 投票:0回答:3

我需要通过一堆 id 来获取 couchdb 文档。是否有请求/API 可以做到这一点? 我不想创建一个视图(id,文档),然后通过键进行查找。 当 id B 树已经存在时

couchdb couchdb-futon
3个回答
13
投票

您应该使用此处记录的批量 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


1
投票

如果您想获取一系列文档,您还可以像在视图中一样使用

startkey_docid
limit
参数。

您所做的是对类似 URL 的 GET 请求

http://127.0.0.1:5984/demodb/_all_docs?startkey_docid="docId1"&limit=5

获得一组结果后,您可以使用最后返回的结果作为下一个开始键并再次运行请求。这样做的好处是跳过视图索引过程(这对于大型数据库来说可能是一件痛苦的事情)。


0
投票

记录在 CouchDB API 中,此处

如果您使用

python-couchdb
库,您可以使用:

_, _, response = <your_db>.resource.post_json('_bulk_get', {'docs': [{'id': '<1st_doc_id>'}, {'id': '<2nd_doc_id>'}]})

您的结果将在

response['results']
中。

© www.soinside.com 2019 - 2024. All rights reserved.