使用mysql,这将是:
SELECT * FROM thetable ORDER BY id DESC LIMIT 10
如何在couchdb中为所有带有“type”的文档执行此操作:“message”? (不用类型:消息拉所有文件)
由于
答案 0 :(得分:10)
创建一个发出所有文档ID的视图。视图键将用于自动排序。
function(doc) {
if(doc.type && doc.type === 'message'){
emit(doc._id, null);
}
}
然后执行查询:http://host/yourdb/_design/yourdesigndoc/_view/viewname?limit=10&include_docs=true&descending=true
因为您需要完整的文档,所以我们在视图中没有包含任何值作为值。相反,我们添加include_docs=true
来获取视图条目的每个完整文档。
请注意,还有一个内置视图也是如此:http://host/yourdb/_all_docs?limit=10&include_docs=true&descending=true
PS:你应该知道CouchDB默认使用UUID作为ID这一事实,如果你真的想获得最新的文档,它会使排序或多或少变得无用。要么提供自己的增量ID(分发/复制呢?),要么使用一个新字段来存储创建文档的时间并在视图中使用。如果您的文档具有created
字段(即UNIX时间戳,JavaScript Date.now()或甚至类似RFC 3339的字符串),则可以为这些值构建索引。
以下是基于时间的观点:
function(doc) {
if(doc.type && doc.type === 'message' && doc.created){
emit(doc.created, null);
}
}
请注意,我们不会发出doc._id本身。但是,CouchDB会自动为每个发出的键/值对存储数据所在的doc._id
,因此我们可以再次使用include_docs=true
来获取完整的文档。
查询http://host/yourdb/_design/yourdesigndoc/_view/viewname?limit=10&include_docs=true&descending=true
答案 1 :(得分:3)
如果文档的ID已经是增量的,而不是CouchDB的默认UUID,您甚至不需要定义视图,只需使用默认的 _all_docs 视图,例如
http://couchdb_host/your_db/_all_docs?limit=10&descending=true&include_docs=true