在 Cloudant 的 _all_docs 查询中排除设计文档
Excluding design documents in _all_docs query in Cloudant
我想检索除设计文档以外的所有文档,但 _all_docs
returns 数据库中的所有文档。从答案中,我发现使用两个查询会给出结果。
_all_docs?endkey="_"
- 列出第一个设计文档之前的文档
_all_docs?startkey="design_\uffff"
- 在设计文档 之后列出文档
如果设计文档之后的文档具有_id“``test”,则此方法无效。
它给出 _id
以小写字母开头的文档。
_
的ASCII为95,反引号为96,小写字母97开头。
那么上面的查询是否可以修改为:
_all_docs?startkey="`"
_all_docs
端点确实 return 设计文档,您说得很对。由于 _
字符位于数字 + 大写字母和小写字母之间,因此设计文档出现在以小写字母(或您的示例中的反引号)开头的文档之前。
你有两个选择:
两次调用 _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
我想检索除设计文档以外的所有文档,但 _all_docs
returns 数据库中的所有文档。从答案中,我发现使用两个查询会给出结果。
_all_docs?endkey="_"
- 列出第一个设计文档之前的文档_all_docs?startkey="design_\uffff"
- 在设计文档 之后列出文档
如果设计文档之后的文档具有_id“``test”,则此方法无效。
它给出 _id
以小写字母开头的文档。
_
的ASCII为95,反引号为96,小写字母97开头。
那么上面的查询是否可以修改为:
_all_docs?startkey="`"
_all_docs
端点确实 return 设计文档,您说得很对。由于 _
字符位于数字 + 大写字母和小写字母之间,因此设计文档出现在以小写字母(或您的示例中的反引号)开头的文档之前。
你有两个选择:
两次调用
_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