首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >couchdb,获取最后10个文档

couchdb,获取最后10个文档
EN

Stack Overflow用户
提问于 2011-08-12 16:33:24
回答 2查看 7.6K关注 0票数 5

使用mysql,这将是:

代码语言:javascript
运行
复制
SELECT * FROM thetable ORDER BY id DESC LIMIT 10

如何在couchdb中对所有具有"type":"message“的文档执行此操作?(不拉取所有类型为:message的文档)

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-12 16:46:11

创建一个发出所有文档ids的视图。视图键将用于自动排序。

代码语言:javascript
运行
复制
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作为if,如果您真的想获得最新的文档,这将使排序或多或少变得无用。或者提供您自己的增量ID(分发/复制怎么办?)或者使用存储文档创建时间的新字段,也可以在视图中使用。

如果您的文档有一个created字段(即UNIX时间戳、JavaScript Date.now(),甚至是一个类似RFC3339的字符串),那么您可以在这些值上构建索引。

以下是基于时间的视图:

代码语言:javascript
运行
复制
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

票数 10
EN

Stack Overflow用户

发布于 2014-11-19 04:05:16

如果您的文档的ID已经是递增的,而不是CouchDB的默认UUID,您甚至不需要定义一个视图,您可以只使用默认的_all_docs视图,例如

代码语言:javascript
运行
复制
http://couchdb_host/your_db/_all_docs?limit=10&descending=true&include_docs=true
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7037527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档