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



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

  1. _all_docs?endkey="_"- 列出第一个设计文档之前的文档
  2. _all_docs?startkey="design_uffff"- 在设计文档之后列出文档

如果设计文档后面的文档_id"测试",则这不起作用。 它使文档_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视图。由于MapReduce视图不索引设计文档,因此您可以在单个查询中获取所有文档(设计文档除外(的列表。

地图功能可以像

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

使用GET /mydb/_design/report/_view/myalldocs查询视图

最新更新