Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Getting full list of revisions on document level using CouchDB-Python?

Tags:

python

couchdb

I was working couchdb-python ( http://code.google.com/p/couchdb-python/ ) and i was wondering if I have any way to retrieve a full list of revisions that have occurred on a document level?

Suppose I have a database named "movies" and it contains several documents. Each of my documents have more than 3 revisions.

Can I retrieve my documents based on the revisions?

If yes, how? I didn't see any obvious method to do it using CouchDB-Python

like image 422
DjangoRocks Avatar asked Feb 11 '11 07:02

DjangoRocks


2 Answers

I am not sure about couchdb-python, however you can get the entire known revision history of a document via the HTTP API.

Learn all about it in the CouchDB Document API documentation.

A normal query:

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

Add ?revs=true to see an array of old revisions.

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

Also you can add ?revs_info=true for more details about the revisions, such as whether they are still available (i.e. they were added after the last compaction and you can fetch them).

$ 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' } ] }
like image 150
JasonSmith Avatar answered Oct 09 '22 23:10

JasonSmith


The Database.revisions method may be what you want, http://code.google.com/p/couchdb-python/source/browse/couchdb/client.py#545.

like image 27
Matt Goodall Avatar answered Oct 10 '22 01:10

Matt Goodall