如何在CouchDB中不创建视图的情况下通过IDS进行批量获取

kpbpu008  于 2023-09-28  发布在  CouchDB
关注(0)|答案(3)|浏览(239)

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

u5i3ibmn

u5i3ibmn1#

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

wnavrhmk

wnavrhmk2#

如果要获取一系列文档,也可以像在视图中一样使用startkey_docidlimit参数。
您所做的是对URL发出GET请求,如
http://127.0.0.1:5984/demodb/_all_docs?startkey_docid="docId1"&limit=5
一旦你有了你的结果集,你就可以使用最后返回的结果作为下一个startkey,然后再次运行请求。这样做的好处是可以跳过视图索引过程(对于大型数据库来说,这可能是一个麻烦)。

ddhy6vgd

ddhy6vgd3#

在CouchDB API中记录,在这里。
如果你使用python-couchdb库,你可以用途:
_, _, response = <your_db>.resource.post_json('_bulk_get', {'docs': [{'id': '<1st_doc_id>'}, {'id': '<2nd_doc_id>'}]})
您的结果将以response['results']为单位。

相关问题