CouchDB is awesome, full stop.<p>While it's missing some popularity from MongoDB and having wide adoption of things like mongoose in lots of open source CMS-type projects, it wins for the (i believe) unique take on map / reduce and writing custom javascript view functions that run on every document, letting you really customize the way you can query slice and access parts of your data...<p>Example: I'm building a document analysis app that does topic + keyword frequency vectorization of a corpus of documents, only a few thousand for now.<p>I end up with a bunch of documents that have "text": "here is my document text..." and "vector": [ array of floating point values ...].<p>What I can do with couchdb is store that 20d vector and emit integers of it as a query key:<p><pre><code> var intVectors = doc.vector.map(function(val){
return Math.floor(val)
})
emit(intVectors, 1);
</code></pre>
Then I can match an input document's vector (calculated the same as corpus documents), calculate a 'range' of those vectors, pass it as start and end keys, and super quickly get a result from the database of 'here are documents that have vectors similar to your input'...<p>Super fun, quick and flexible to work with!