我想检索除设计文档以外的所有文档,但 _all_docs 返回数据库中的所有文档。从答案中,我发现使用两个查询会给出结果。
如果设计文档之后的文档具有 _id "``test",这将不起作用。
它给出了 _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 View 。由于 MapReduce View 不索引设计文档,这允许您在单个查询中获取所有文档(不包括设计文档)的列表。
map 函数可以很简单
function(doc) {
emit(doc._id, null);
}
使用
GET /mydb/_design/report/_view/myalldocs
查询 View
关于couchdb - 在 Cloudant 中的 _all_docs 查询中排除设计文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45830881/