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

时间:2013-08-01 20:51:01

标签: couchdb couchdb-futon

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

3 个答案:

答案 0 :(得分:10)

您应该使用已记录的批量API here

它可能看起来像下面。

  • 通过POST传递钥匙作为身体的一部分
  • 传入db的名称(在下面的示例中,它是demodb
  • 在网址中
  • ,使用_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 :(得分:1)

如果您想获取一系列文档,也可以像在视图中一样使用startkey_docidlimit参数。

您所做的是对

等网址的GET请求

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

获得结果集后,可以使用最后一个将其作为下一个启动键返回并再次运行请求。这有利于跳过视图索引过程(这对于大型数据库来说可能是一种痛苦)。

答案 2 :(得分:0)

记录在CouchDB API here中。

如果您使用的是python-couchdb库,则可以使用:

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

您的结果将在response['results']中。