Shw*_*taJ 5 couchdb design-documents cloudant
我想检索除设计文档之外的所有文档,但_all_docs返回数据库中的所有文档。从答案中,我发现使用两个查询就会给出结果。
_all_docs?endkey="_"- 列出直到第一个设计文档的文档_all_docs?startkey="design_\uffff"- 在设计文档之后列出文档如果遵循设计文档的文档具有 _id“``test”,则此操作不起作用。它给出了以小写字母开头的文档_id。
的 ASCII_为 95,反引号的 ASCII 为 96。小写字母以 97 开头。
那么上面的查询是否可以修改为:
_all_docs?startkey="`"
Run Code Online (Sandbox Code Playgroud)
您说_all_docs端点确实返回设计文档是非常正确的。由于_字符位于数字+大写字母和小写字母之间,因此设计文档出现在以小写字母(或示例中的反引号)开头的文档之前。
这给你留下了两个选择:
进行两次调用以_all_docs获取设计文档“任一侧”的文档:
GET /mydb/_all_docs?endkey="_"
GET /mydb/_all_docs?startkey="`"
Run Code Online (Sandbox Code Playgroud)
或者,创建一个新MapReduce视图。由于MapReduce视图不索引设计文档,因此您可以在单个查询中获取所有文档(不包括设计文档)的列表。
地图功能可以很简单
function(doc) {
emit(doc._id, null);
}
Run Code Online (Sandbox Code Playgroud)
查询视图GET /mydb/_design/report/_view/myalldocs