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

时间:2017-08-23 04:54:06

标签: couchdb cloudant design-documents

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

  1. _all_docs?endkey =“_” - 列出第一个设计文档的文档
  2. _all_docs?startkey =“design_ \ uffff” - 列出设计文档后的文档
  3. 如果设计文档后面的文档有_id“``test”,则不起作用。 它给出了_id以小写字母开头的文档。 _的ASCII是95,后退的是96.小写字母以97开头。 因此可以将上述查询修改为: _all_docs?startkey = “`”

1 个答案:

答案 0 :(得分:2)

_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

查询视图