couchdb - 在 Cloudant 中的 _all_docs 查询中排除设计文档

标签 couchdb cloudant design-documents

我想检索除设计文档以外的所有文档,但 _all_docs 返回数据库中的所有文档。从答案中,我发现使用两个查询会给出结果。

  • _all_docs?endkey="_"- 列出第一个设计文档之前的文档
  • _all_docs?startkey="design_\uffff"- 列出设计文档之后的文档

  • 如果设计文档之后的文档具有 _id "``test",这将不起作用。
    它给出了 _id 以小写字母开头的文档。
    _的ASCII码为95,反引号的ASCII码为96,小写字母以97开头。
    所以可以将上面的查询修改为:
    _all_docs?startkey="`"

    最佳答案

    您说得对 _all_docs端点确实返回设计文档。由于 _ 字符位于数字 + 大写字母和小写字母之间,因此设计文档出现在以小写字母开头的文档之前(或在您的示例中为反勾号)。

    这让您有两个选择:

    1) 两次调用_all_docs:GET /mydb/_all_docs?endkey="_" & GET /mydb/_all_docs?startkey=" "` 获取设计文档的"任一侧"文档
    2) 或者,创建一个新的 MapReduce View 。由于 MapReduce View 不索引设计文档,这允许您在单个查询中获取所有文档(不包括设计文档)的列表。

    map 函数可以很简单

    function(doc) {
      emit(doc._id, null);
    }
    

    使用 GET /mydb/_design/report/_view/myalldocs 查询 View

    关于couchdb - 在 Cloudant 中的 _all_docs 查询中排除设计文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45830881/

    相关文章:

    按值对 CouchDB View 进行排序

    python - 无法在 Couchdb 上运行 Python View

    asp-classic - 我可以从 Windows 上运行的 ASP Classic/Javascript 连接到 CouchDB 吗?

    java - Cloudant AuthCookie 不能为空

    couchdb - 在 CouchDB 中,我应该将 _id 用于关系和 _changes 吗?

    node.js - Node.js 中的 Couchdb

    android - 压缩 Couchdb 复制流量

    uml - 设计文档与 UML 还是两者兼而有之?

    software-design - 软件设计文档与系统设计文档的区别