能否让CouchDB的_change API返回所有文档变更历史?
问题解答
首先明确:CouchDB原生的_change API没有直接返回文档完整修订历史的参数选项,它默认只会返回每个文档的最新修订版本信息。
如果不想逐个查询文档获取修订历史,可以试试这两个实用方案:
在文档更新时主动记录修订历史
每次更新文档时,手动在文档中添加(或更新)一个自定义字段,比如revision_history,把每次的修订ID、更新时间等信息存进去。比如更新前先获取当前文档的_rev,再把它追加到这个字段里。这样_changeAPI返回的文档内容里就自带了完整的修订记录,不需要额外查询。用批量接口批量获取修订信息
先通过_changeAPI拿到目标文档的ID列表,然后用/_bulk_get接口批量请求这些文档的修订信息。请求格式示例如下:{ "docs": [ {"id": "doc_id_1", "revs_info": true}, {"id": "doc_id_2", "revs_info": true} ] }这种方式比逐个请求
db/doc?revs_info=true效率高很多,适合处理大量文档的场景。
另外补充:如果需要实时变更流同时携带修订历史,原生API目前做不到,只能结合上面的方案二,拿到变更后批量拉取历史。
内容的提问来源于stack exchange,提问作者FangQ
相关产品推荐
相关产品推荐

