Получить полный список ревизий на уровне документа, используя CouchDB-Python? - PullRequest
11 голосов
/ 11 февраля 2011

Я работал на couchdb-python (http://code.google.com/p/couchdb-python/), и мне было интересно, есть ли у меня какой-либо способ получить полный список ревизий, которые произошли на уровне документа?

Предположим, у меня есть база данных с именем "movies", и она содержит несколько документов. Каждый из моих документов содержит более 3 ревизий.

Могу ли я получить свои документы на основе изменений?

Если да, то как? Я не видел никакого очевидного способа сделать это с помощью CouchDB-Python

Ответы [ 2 ]

13 голосов
/ 15 февраля 2011

Я не уверен насчет couchdb-python, однако вы можете получить всю известную историю изменений документа через HTTP API.

Узнайте все об этом в документации 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' } ] }
2 голосов
/ 11 февраля 2011

Возможно, вам нужен метод Database.revisions, http://code.google.com/p/couchdb-python/source/browse/couchdb/client.py#545.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...