如何使用CouchDB-Python获取文档级别的完整修订列表?

10 投票
2 回答
13581 浏览
提问于 2025-04-16 11:37

我在使用couchdb-python这个库(http://code.google.com/p/couchdb-python/),我想知道有没有办法获取某个文档的所有版本列表。

假设我有一个叫“movies”的数据库,里面有好几个文档。每个文档都有超过3个版本。

我能根据这些版本来获取我的文档吗?

如果可以的话,怎么做呢?我没有看到使用CouchDB-Python有明显的方法可以做到这一点。

2 个回答

2

你可能需要用到Database.revisions这个方法,具体可以参考这个链接:http://code.google.com/p/couchdb-python/source/browse/couchdb/client.py#545

14

我不太确定couchdb-python的情况,不过你可以通过HTTP接口获取一个文档的所有已知版本历史。

想了解更多,可以查看CouchDB文档API的说明。

一个普通的查询示例:

$ curl jhs.couchone.com/db/doc
{ _id: 'doc',
  _rev: '3-825cb35de44c433bfb2df415563a19de' }

在查询后面加上?revs=true,这样就能看到一个旧版本的数组。

$ curl jhs.couchone.com/db/doc?revs=true
{ _id: 'doc',
  _rev: '3-825cb35de44c433bfb2df415563a19de',
  _revisions: 
   { start: 3,
     ids: 
      [ '825cb35de44c433bfb2df415563a19de',
        '7051cbe5c8faecd085a3fa619e6e6337',
        '967a00dff5e02add41819138abb3284d' ] } }

你还可以加上?revs_info=true,这样可以获取更多关于版本的信息,比如这些版本是否仍然可用(也就是说,它们是在最后一次压缩后添加的,你可以获取到它们)。

$ curl jhs.couchone.com/db/doc?revs_info=true
{ _id: 'doc',
  _rev: '3-825cb35de44c433bfb2df415563a19de',
  _revs_info: 
   [ { rev: '3-825cb35de44c433bfb2df415563a19de',
       status: 'available' },
     { rev: '2-7051cbe5c8faecd085a3fa619e6e6337',
       status: 'available' },
     { rev: '1-967a00dff5e02add41819138abb3284d',
       status: 'available' } ] }

撰写回答