Compare two couchdb databases

764 views Asked by At

I have a couchdb instance with database a and database b. They should contain identical sets of documents, except that the _rev property will be different, which, AIUI, means I can't use replication.

How do I verify that the two databases really do contain the same documents which are all otherwise 'equal'?

I've tried using the python-based couchdb-dump tool with a lot of sed magic to get rid of the _rev and MD5 and ETag headers, but then it still seems that property order in the JSON structure is slightly random, which means I still can't compare the output easily with something like diff.

Is there a better approach here? Have other people wanted to solve a similar problem?

1

There are 1 answers

1
Jacob Groundwater On BEST ANSWER

If you want to make sure they're exactly the same, write a map job that emits the document path as the key, and the documents hash (generated any way you like) as the value. Do not include the _rev field in the hash generation.

You cannot reduce to a single hash because order is not guaranteed, but you can feed the resultant JSON document to a good diff program.