Couchdb 不包括Cloudant中所有文档查询中的设计文档

Couchdb 不包括Cloudant中所有文档查询中的设计文档,couchdb,cloudant,design-documents,Couchdb,Cloudant,Design Documents,我想检索除设计文档以外的所有文档,但_all_docs返回数据库中的所有文档。从答案中,我发现使用两个查询可以得到结果 _所有_文档?endkey=“_”-列出第一个设计文档之前的文档 _所有文档?startkey=“design\uffff”-在设计文档之后列出文档 如果设计文档后面的文档具有_id“`test”,则此操作无效。 它给出了以小写字母开头的文件id。 _u的ASCII为95,反勾号的ASCII为96。小写字母以97开头。 因此,可以将上述查询修改为: _all_docs?star

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

  • _所有_文档?endkey=“_”-列出第一个设计文档之前的文档
  • _所有文档?startkey=“design\uffff”-在设计文档之后列出文档
  • 如果设计文档后面的文档具有_id“`test”,则此操作无效。 它给出了以小写字母开头的文件id。 _u的ASCII为95,反勾号的ASCII为96。小写字母以97开头。 因此,可以将上述查询修改为:
    _all_docs?startkey=“`”

    您完全正确地认为
    \u all_docs
    端点确实返回了设计文档。由于u字符位于数字+大写字母和小写字母之间,因此设计文档显示在以小写字母开头的文档(或示例中的回勾)之前

    这给您留下了两个选择:

    1) 对所有文档进行两次调用:
    GET/mydb/\u-all\u-docs?endkey=“\u”
    &
    GET/mydb/\u-all\u-docs?startkey=“
    ”`以获取设计文档的“任一侧”文档 2) 或者,创建一个新的MapReduce视图。由于MapReduce视图不为设计文档编制索引,因此允许您在单个查询中获取所有文档(不包括设计文档)的列表

    map函数可以简单到

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

    使用
    GET/mydb/\u design/report/\u view/myalldocs

    查询视图,您能进一步解释这种方法吗?我不明白如何“给所有文档打两个电话”。谢谢大家!@CarCrazyBen首先进行API调用/\u all\u docs?endkey=“\u0”。这将为您提供设计文档之前的所有文档。存储此结果。生成API调用/_all_docs?startkey=“`”。这将为您提供在设计文档之后显示的所有文档。然后,组合两个API调用的结果。这样,您就排除了设计文档,只获取实际的数据文档。如果您注意到,文档在Cloudant中按照_id字段字符的ASCII值顺序排列。