4

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

  1. _all_docs?endkey="_" - 列出文档直到第一个设计文档
  2. _all_docs?startkey="design_\uffff" - 在设计文档之后列出文档

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

4

1 回答 1

3

您非常正确,_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

于 2017-08-23T08:10:33.960 回答