【问题标题】:How to bulk fetch by ids in couchdb without creating a view如何在不创建视图的情况下通过 couchdb 中的 id 批量获取
【发布时间】:2023-04-01 20:26:01
【问题描述】:

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

【问题讨论】:

    标签: couchdb couchdb-futon


    【解决方案1】:

    记录在 CouchDB API 中,here

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

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

    您的结果将位于response['results']

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        【解决方案3】:

        您应该使用记录在 here 中的批量 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

        【讨论】:

        • API 链接已失效。您可以请求的 ID 数量是否有限制?我正在查看请求 48,000 多个文档以在服务器上进行批量处理。
        • 我已经 5 年没有使用 CouchDB 了。 :) 文档都在这里,这看起来很相关。 docs.couchdb.org/en/stable/api/database/…
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多