Très vieille question, mais elle est au-dessus de Google et je n'aime pas vraiment les réponses que je vois, alors voici les miennes.
Il y a bien plus à Couchdb que la possibilité de développer des CouchApps. La plupart des gens utilisent CouchDb dans une architecture Web classique à 3 niveaux.
Dans la pratique, le facteur décisif pour la plupart des gens sera le fait que MongoDb permet des requêtes ad hoc avec une syntaxe similaire à SQL alors que CouchDb ne le fait pas (vous devez créer des vues de carte / réduction qui désactive certaines personnes même si la création de ces vues est rapide pour le développement d'applications (ils n'ont rien à voir avec les procédures stockées).
Pour répondre aux points soulevés dans la réponse acceptée: CouchDb a un excellent système de versionning, mais cela ne signifie pas qu'il est uniquement adapté (ou plus adapté) aux endroits où le versionning est important. De plus, couchdb est très convivial pour l'écriture grâce à sa nature d'ajout uniquement (les opérations d'écriture reviennent en un rien de temps tout en garantissant qu'aucune donnée ne sera jamais perdue).
Une chose très importante qui n'est mentionnée par personne est le fait que CouchDb s'appuie sur des index b-tree. Cela signifie que si vous avez 1 "ligne" ou 20 milliards, le temps d'interrogation restera toujours inférieur à 10 ms. C'est un changeur de jeu qui fait de CouchDb une base de données à faible latence et facile à lire, et cela ne devrait vraiment pas être négligé.
Pour être juste et exhaustif, l'avantage de MongoDb sur CouchDb est l'outillage et le marketing. Ils ont des outils citoyens de première classe pour toutes les principales langues et plates-formes, ce qui facilite l'intégration et cela, ajouté à leurs requêtes ad hoc, rend la transition de SQL encore plus facile.
CouchDb n'a pas ce niveau d'outils - même s'il existe de nombreuses bibliothèques disponibles aujourd'hui - mais CouchDb est exposé en tant qu'API HTTP et il est donc assez facile de créer un wrapper dans votre langue préférée pour en parler. Personnellement, j'aime cette approche car elle évite les ballonnements et vous permet de ne prendre que ce que vous voulez (principe de ségrégation des interfaces).
Je dirais donc que l'utilisation de l'un ou de l'autre est en grande partie une question de confort et de préférence avec leurs paradigmes. L'approche CouchDb "convient", pour certaines personnes, mais si après avoir pris connaissance des fonctionnalités de la base de données (dans le guide officiel exhaustif ), vous n'avez pas votre moment "enfer ouais", vous devriez probablement passer à autre chose.
Je déconseille d'utiliser CouchDb si vous voulez simplement utiliser "le bon outil pour le bon travail". parce que vous découvrirez que vous ne pouvez pas simplement l'utiliser de cette façon et vous finirez par être énervé et écrire des articles de blog tels que "Où sont les jointures dans CouchDb?" et "Où est la gestion des transactions?". En effet, Couchdb est - paradoxalement - très transparent mais nécessite en même temps un changement de paradigme et un changement dans la façon dont vous abordez les problèmes pour vraiment briller (et vraiment travailler).
Mais une fois que vous avez fait cela, ça rapporte vraiment. J'aurais personnellement besoin de raisons très fortes ou d'un disjoncteur majeur sur un projet pour choisir une autre base de données, mais jusqu'à présent je n'en ai rencontré aucune.