如果只需要单查询key,可以使用如下map:
function (doc) {
if (doc.blogId) {
emit([doc.key, doc.anotherkey], 1);
}
}
并查询"KEY"with ?startkey=["KEY"]&endkey=["KEY",{}]&include_docs=true。
在这里,根据CouchDB 的排序规则:
["KEY"]是一个小于任何["KEY","OTHER"]值的值(因为较长的数组在其前缀之后排序),但大于任何["KEY2","OTHER"]带有"KEY2" < "KEY";
- and
["KEY",{}]是一个大于任何["KEY","OTHER"]值的值,如果doc.otherkey永远不是 JSON 对象(因为 JSON 对象在任何其他 JSON 值之后),但小于任何["KEY2","OTHER"]带有"KEY2" > "KEY".
当然,这不仅限于字符串。只要排序规则正确,任何类型的值都可以使用。
startkey请记住对和中的值进行 URL 编码endkey。例如,使用curl并假设您的数据库是“DB”:
curl 'http://localhost:5984/DB/_design/test/_view/all?startkey=%5B%22KEY%22%5D&endkey=%5B%22KEY%22,%7B%7D%5D&include_docs=true'
请注意,我使用了include_docs查询参数,而不是使用 发出整个文档emit(..., doc),以节省磁盘空间。查询参数记录在CouchDB 文档中。
要按降序对结果进行排序,请使用descending=true查询参数并交换 和 的值,startkey如endkey权威指南中所述。
curl 'http://localhost:5984/DB/_design/test/_view/all?endkey=%5B%22KEY%22%5D&startkey=%5B%22KEY%22,%7B%7D%5D&include_docs=true&descending=true'