我想检索除设计文档以外的所有文档,但_all_docs
返回数据库中的所有文档。从答案中,我发现使用两个查询会给出结果。
_all_docs?endkey="_"
- 列出第一个设计文档之前的文档_all_docs?startkey="design_uffff"
- 在设计文档之后列出文档
如果设计文档后面的文档_id"测试",则这不起作用。 它使文档_id
以小写字母开头。
_
的 ASCII 为 95,反引号的 ASCII 为 96。小写字母以 97 开头。
那么可以将上面的查询修改为:
_all_docs?startkey="`"
您说得很对,_all_docs
端点确实返回设计文档。由于_
字符位于数字 + 大写字母和小写字母之间,因此设计文档显示在以小写字母开头的文档之前(或示例中的反引号(。
这给您留下了两个选择:
-
对
_all_docs
进行两次调用以获取设计文档的"任一侧"文档:GET /mydb/_all_docs?endkey="_" GET /mydb/_all_docs?startkey="`"
-
或者,创建新的
MapReduce
视图。由于MapReduce
视图不索引设计文档,因此您可以在单个查询中获取所有文档(设计文档除外(的列表。
地图功能可以像
function(doc) {
emit(doc._id, null);
}
使用GET /mydb/_design/report/_view/myalldocs
查询视图